C++ fscanf()输出错误的值

C++ fscanf()输出错误的值,c++,scanf,C++,Scanf,我正在尝试从文本文件中读取整数。然而,这段代码不断地打印i的值。所以它一直在打印零,而不是文件中的整数。我该如何解决这个问题?谢谢大家! FILE* inFile = fopen(filename,"r"); int i=0; int x; while(fscanf(inFile,"%d",&i)!= EOF){ printf("%d\n", i); usleep(30000); //fs

我正在尝试从文本文件中读取整数。然而,这段代码不断地打印i的值。所以它一直在打印零,而不是文件中的整数。我该如何解决这个问题?谢谢大家!

FILE* inFile = fopen(filename,"r");
    int i=0;
    int x;


    while(fscanf(inFile,"%d",&i)!= EOF){
            printf("%d\n", i);
            usleep(30000);
            //fscanf(inFile,"%d",&i);

    }
    fclose(inFile);
fscanf()
返回成功扫描的字段数

所以而不是

while (fscanf(inFile, "%d", &i) != EOF)
试试像这样的东西

while (fscanf(inFile, "%d", &i) == 1)

为什么返回值为1时不循环?请注意,如果遇到文件流的结尾,则返回值仅为EOF。如果在此上下文中发生其他参数匹配错误,则返回值将为0。因为您最终需要知道这一点,好的,我将更改防护。打印i的值而不是从文件中读取的整数怎么样?这是输入失败的副作用,
i
未被修改。如果文件中有非整数文本,则会发生这种情况。也有可能文件甚至没有打开。你从来没有真正测试过fopen是否成功。我知道了。非常感谢你。