乱码,不知道为什么
#include<stdio.h>
#include<string.h>
void main()
{
int n,m,t;
m=0;
char i[100],o[100];
gets(i);
n=strlen(i);
while(n>0)
{
o[m]=i[n-1];
m++;
n--;
}
printf("%s\n",o);
}
数组定义完,没有初始化;系统会分配一段物理内存给数组,如果不初始化,就会打印出乱码,该段内存地址有可能之前被使用过。
char i[100]={0},o[100]= {0};
结果对比:
未初始化数组
2.初始化数组
追问后面加个'\0'也可以,能不能综合两个方法解释一下
追答c/c++中规定字符串的结尾标志为'\0',在打印数组里面的元素时,遇到'\0'就结束了。
例如:上面定义的char i[100],即使你定义的数组占100个字节,输完abc后加'\0',打印也只会到此为止。
库函数strrev可以将一个字符串直接反序输出,使用时要包含头文件string.h。举例代码如下:
//#include "stdafx.h"//If the vc++6.0, with this line.