#include<stdio.h>
int main()
{
int i,j;
char s[80];
printf("please enter a number string:");
gets(s);
for(i=0;s[i]!='\0';i++);
for(;i>0;i--)
{
j=i-1;
s[j*2]=s[j*2+1]=s[j];
}
puts(s);
return 0;
}
结果正确了,但是后面却有一串乱码,什么回事呢
我也是这样觉得的,但是之前都没遇到这种情况的
追答这个我就不是很清楚了...
要是可以我们就尽量写的严谨一点
让系统没有办法找我们麻烦
对了,我在想一件事 会不会有可能是字符在移位(复制)的时候 不小心把 终止位元'\0'覆盖了?
所以後面的乱码就跑出来了?
我看了谭浩强写的那本C语言,里面写到没有被定义的元素都会被初始化为\.0,所以才纠结的
追答不好意思 我没看过那本书,我的记忆中正常情况未宣告的字串应该都会被初始化成 '\0'
但是那可能只是理论...
我想可能是(纯属猜测) 系统判断字串结束是认 终止位元
所以对他来说多馀的'\0'是无意义的 所以就只有初始化前面的位元了
後来 输入 时的的字串有'\0'
但是当你在展开的时候却因为 判断 '\0'时的位置 之後
终止位元 '\0'没有被复制
所以後面的乱码就全都跑出来了
char s[80]= {};不能初始化把,我用VC运行出错了
追答char s[80]= {0};这样呢?