程序执行出现满屏幕的1,一直不停止
各位帮下忙呗,看下哪儿错了呗,我执行出来满屏幕的1还不停。程序实现功能是从data.in中读取一串字符,从第二个字符开始在每个字符前加一个空格,并输出。换行结束输出
执行
读取文件
------解决方案--------------------while循环里fgets每次读取一行数据时都会覆盖a中原有的内容,a没有初始化,里面可能会有垃圾数据;
strlen计算字符串的长度是以'\0'字符为结尾标识来计算的,a中没看到明确的'\0'结束符;
------解决方案--------------------fgets()文件中读取一串字符,直到遇到‘\n’ '\0' 结束符就结束了本次取值。所以strlen计算字符串的长度时,会出错的,你可以再字符数组a后面添加一个‘\0’字符。
你可以试着每次读取字符串后,偏移一下文件开始读取位置。
------解决方案--------------------1楼和2楼说得不错。strlen()计算的值估计是个超大的值
另外,fopen error的情况应该是不需要fclose的。
------解决方案--------------------
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", " ");
}