这是我的代码.
#include<stdio.h>
void main(){
FILE *fp;
int a,b;
fp=fopen("hello.txt","r");
while(!feof(fp)){
fscanf(fp,"%d %d",&a,&b);
printf("%d %d\n",a,b);
}
}
Run Code Online (Sandbox Code Playgroud)
我的hello.txt是
1 2
3 4
Run Code Online (Sandbox Code Playgroud)
我的输出是
1 2
3 4
4 4
Run Code Online (Sandbox Code Playgroud)
为什么我的最后一行被打印两次.还没有fp达到EOF?
此外,stackoverflow中的标记说明Usually, when it is used, the code using it is wrong.
是什么意思?
谢谢.
如果不立即检查结果,就不能执行输入操作!
以下应该有效:
while (fscanf(fp,"%d %d",&a,&b) == 2)
{
printf("%d %d\n",a,b);
}
Run Code Online (Sandbox Code Playgroud)
这将在第一次转换失败或文件结束时停止.或者,您可以区分转换失败(跳过错误的行)和文件结束; 请参阅文档fscanf.