我正在使用 fscanf 读取输入
(2,3)
(3,4)
来自一个文件,但每当我运行该程序时它都会进入无限循环。输入来自文件 abc.txt ,该文件必须作为命令行参数传递。代码如下
#include<stdio.h>
#include<stdlib.h>
int main(int argc,char **argv){
int a,b;
FILE *fp=fopen(argv[1],"r");
while(!feof(fp)){
fscanf(fp,"(%d,%d)",&a,&b);
printf("\nThe values are :%d %d\n",a,b);
}
fclose(fp);
}
可能是什么问题?
最佳答案
当 fscanf
没有找到您想要读取的数据时,它不会推进读取位置,因此永远不会到达 EOF。检查 fscanf
是否返回两个数字,如果没有则中断:
while(!feof(fp)){
if (fscanf(fp,"(%d,%d)",&a,&b) != 2) {
break;
}
printf("\nThe values are :%d %d\n",a,b);
}
您可以完全放弃 feof
检查,因为 break
会更快发生。
关于c - 使用 fscanf 读取文件后无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17921514/