Kar*_*ikh 4 c pointers integer input eof
我的问题很简单,但我无法在谷歌上找到它,所以我在这里.
基本上,作为一个例子,我正在读取一堆整数,直到输入文件中的EOF.我使用fgetc来检查,但随后它将文件指针移动到第二个整数的地址.如何检查此while循环中的EOF而不检查文件指针?
请记住,我将使用此循环执行比使用整数扫描更复杂的操作.另外,我不知道我使用fscanf而不是fgets.它只是一个简单的例子,向您展示我的意思.
while(fgetc(ifp) != EOF)
{
fscanf(ifp, "%d", &test);
printf("%d\n", test);
}
Run Code Online (Sandbox Code Playgroud)
例如,如果输入文件有整数1-10,则上面的代码将打印:
2 3 4 5 6 7 8 9 10
错过了1!
您应该将EOF条件视为实现细节.这里真正重要的是fscanf是否成功返回了一个值.
while(fscanf(ifp, "%d", &test) == 1) {
printf("%d\n", test);
}
Run Code Online (Sandbox Code Playgroud)
另一方面,这感觉就像将逻辑放在循环中间那样有意义的时候.
while(1) {
int ret = fscanf(ifp, "%d", &test);
if (ret != 1)
break;
printf("%d\n", test);
}
Run Code Online (Sandbox Code Playgroud)
特别是对于调试,将事物拆分为可以检查的变量的单独语句可能会很好.