无法读取C中的文本文件

时间:2019-02-08 17:36:08

标签: c

你好,我遇到了一个问题,试图解决问题并学习如何从文件中学习。我通过教程以及当我执行而不是学习我的文件并在控制台上编写诸如1 4 6 5 1之类的代码时执行了此代码。 。它只是垃圾邮件0 0 0 0 0 0 0然后重复 如果您要告诉我问题出在哪里,那将非常感谢您的时间:)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


#define UNUSED(__ARG__) ((void)__ARG__)

int main(int argc, char** argv)
{
    UNUSED(argc);
    UNUSED(argv);

    int i = 0;
    FILE* x =fopen("cisla.txt","r");
     fscanf(x,"%d",&i);
 while (!feof (x))
 {
     printf("%d",i);
     fscanf(x,"%d",&i);


 }
 fclose(x);


return 0;
}

1 个答案:

答案 0 :(得分:4)

无论这是什么教程,都将其丢弃。

首先,您需要检查文件操作是否成功,否则程序将继续盲目执行。 fopen可能失败了。如果失败,它将返回NULL,因此您可以检查并通过perror收到错误消息。

FILE *x = fopen("cisla.txt","r");
if( x == NULL ) {
    perror("Could not open the file");
    exit(1);
}

然后,正如其他人提到的,you don't check for end of file。而是执行IO操作并检查它是否成功。在这种情况下,fscanf返回的匹配项数应为1。

while ( fscanf(x, "%d", &i) == 1 ) {
    printf("%d",i);
}

请注意,the scanf family is fraught with gotchas。但是您稍后再讨论。

最后,UNUSED的内容非常聪明,完全没有必要。只需声明不带参数的mainThis is perfectly valid

int main() {