从行 - C读取多个整数

时间:2015-11-15 18:53:33

标签: c file scanf

我正在尝试从500Mb文本文件中读取多个整数,其中整数是格式

1000002 1 55
1000002 1000006 33
1000002 1000007 8
1000002 1000009 144

当我尝试读取整数时,我遇到的问题是程序没有读取整个文件和它读取的文件,它似乎不是正确的值我的代码是

FILE *file;
    file = fopen("user_artist_data.txt", "r");
    int User_ID, artist_ID, Play_Count = 0;
    int check = 0;
    while(fscanf(file, "%d %d %d", &User_ID, &artist_ID, &Play_Count) != 0)
    {
        check++;
        printf("%d %d %d\n", User_ID, artist_ID, Play_Count);
    }
    fclose(file);

你可以帮我修理我的代码。 谢谢

1 个答案:

答案 0 :(得分:1)

仔细阅读 fscanf(3)的文档(您可能应该多次阅读)。

然后你就会明白你可能应该编码

while(fscanf(file, " %d %d %d", &User_ID, &artist_ID, &Play_Count) == 3)

(注意空格按fscanf的新行处理

顺便说一下,如果您的文件是面向行的,那么您最好使用例如getline(3)(如果fgets不可用,则为getline),然后使用sscanf(3)解析每一行。 %n转换规范可能非常有用。

不要忘记编译所有警告和调试信息(例如gcc -Wall -Wextra -g如果使用GCC ...)并使用调试器(例如gdb