日期:2014-05-16  浏览次数:20709 次

程序执行出现满屏幕的1,一直不停止

各位帮下忙呗,看下哪儿错了呗,我执行出来满屏幕的1还不停。程序实现功能是从data.in中读取一串字符,从第二个字符开始在每个字符前加一个空格,并输出。换行结束输出
执行 读取文件

------解决方案--------------------
while循环里fgets每次读取一行数据时都会覆盖a中原有的内容,a没有初始化,里面可能会有垃圾数据;
strlen计算字符串的长度是以'\0'字符为结尾标识来计算的,a中没看到明确的'\0'结束符;
------解决方案--------------------
fgets()文件中读取一串字符,直到遇到‘\n’ '\0' 结束符就结束了本次取值。所以strlen计算字符串的长度时,会出错的,你可以再字符数组a后面添加一个‘\0’字符。
你可以试着每次读取字符串后,偏移一下文件开始读取位置。 
------解决方案--------------------
1楼和2楼说得不错。strlen()计算的值估计是个超大的值
另外,fopen error的情况应该是不需要fclose的。
------解决方案--------------------
引用:
如果我用fscanf和for循环一起可以不。最初我用的时候他总是在执行的时候显示error,我想问下是为什么啊


LZ程序逻辑都错了,
------解决方案--------------------
1 2 3 楼都不错,还有一个致命的错误
23行 if (i = 0)     // =应该写成==吧

参考一下:
int len = strlen(a);
for (int i=0; i<len; i++)
{
   printf("%c", a[i]);
   if (i != (len-1))
     printf("%s", " ");
}