C语言%s输出错误

为什么这样输出字符数组 有的时候能输出成功,有的时候输出后面带几个垃圾字符?

第1个回答  2013-05-13
因为你的字符数组空间没有用完啊,你可以在while语句执行完后加上a[i]='\0';就行了!这样就成字符串了。你要分清楚字符数组和字符串的区别!追问

但是为什么有的时候能输出正确?不初始化应该是100个垃圾值,为什么有的时候输出正确有的时候有一个垃圾值,有的时候几个垃圾值?不是每次都输出100个值么?

追答

那些你所谓的垃圾值是剩余空间的随机数,是不确定的!!正确的时候估计是你输入100个数了吧!

第2个回答  2013-05-13
你的char a[100]没有初始化,将char a[100]修改为char a[100] = {0};就行了追问

不初始化应该是100个垃圾值,为什么有的时候输出正确有的时候有一个垃圾值,有的时候几个垃圾值?

追答

末初始化时,不知道里面实际是什么,所以也就不知道是一个,两个或者是多个,不过你的程序当输入超过100时,就会产生溢出,此时程序就会挂掉,所以你要小心

第3个回答  2013-05-13
没有加'\0'这样写就应该没事了

#include <stdio.h>
int main(int argc, char **argv)
{
int i = 0;
char a[100];
while ((a[i] = getchar()) != '\n') {
i++;
}
a[i] = '\0';
printf("%s", a);

return 0;
}

还有这个程序可能会缓冲区溢出,改用动态分配会好些!本回答被提问者和网友采纳
第4个回答  2013-05-13
数组a没有初始化啊
相似回答