【发布时间】:2020-09-18 07:54:27
【问题描述】:
当 fgets() 包含在 while 循环中时,输出是正确的,但是将它放在外面会使其成为无限循环。谁能解释一下为什么?
main()
{
FILE *fp=fopen("myfile.txt","r");
char s[100];
fgets(s,50,fp);
while(s!=NULL) //infinte loop
puts(s);
/* while((fgets(s,100,fp))!=NULL)
puts(s);
This runs fine */
fclose(fp);
}
【问题讨论】:
-
请看下面我的回答。
fgets从流中读取一行 tell\n或已达到限制字符。当 fget 到达eof时,它将返回null。查看我的内联 cmets -
贴出的代码无法编译!首先是因为它缺少所需的头文件所需的
#include语句。其次是因为函数main()(对于所有C语言有效签名)返回一个int -
数组
s[]永远不会等于 NULL,因此发布的代码包含逻辑错误
标签: c loops file-handling