我正在学习用C语言编写的文件I / O,我编写了一个程序来读取文件,然后对于找到的每个奇数,它必须在屏幕上打印*
。
我的问题是我的程序永远永远打印*
。
我尝试了不同的方法,有些方法来自本网站,但直到使用EOF读取文本文件为止,我似乎都无法理解。
我想学习如何阅读文本文件,直到文件结尾。如何阅读直到文本文件的末尾? C中的EOF。
int main(void)
{
int num;
FILE *ifp;
ifp = fopen("numbers.txt", "r" );
if(ifp == NULL)
{
exit(1);
}
do
{
fscanf(ifp, "%d", &num);
if(num%2 == 0)
{
printf("*\n");
}
} while(num != EOF);
fclose(ifp);
return 0;
}
之所以这样做,是因为while(num != EOF)
正在测试从文件读取的数字int num
是否为EOF
,而不是是否到达文件末尾。
要测试是否在FILE *ifp
上设置了EOF标志,请改用while(!feof(ifp))
。