int main ()
{
FILE *in;
in = fopen("input.txt","r");
char c = fgetc(in);
while(feof(in) != EOF)
{
printf("%c",c);
c = fgetc(in);
}
}
feof(in) != EOF
并不会阻止while循环停止,但像!feof(in)
这样的东西似乎有效。有什么想法吗?
答案 0 :(得分:3)
feof
在文件末尾不返回EOF
;它返回true
,不等于EOF
。
fgetc
会在文件结束时返回EOF
。您的代码应该写成
int main ()
{
FILE *in;
in = fopen("input.txt","r");
int c = fgetc(in); // note int not char
while(c != EOF) // compare c to EOF
{
printf("%c",c);
c = fgetc(in);
}
}
你不应该使用feof
作为循环条件,因为在之后尝试读取文件的末尾之后它不会返回true
,这意味着你的循环将经常执行一次。