读取C中的大量行(csv文件)

时间:2017-09-29 17:39:20

标签: c file csv input

我有一个输入.csv文件,其格式如下:

10012,85
11981,100
10728,65

第一个号码是学生证,后面是考试成绩。我需要能够读取无限数量的这些行,但我不确定如何在C中。我无法正确格式化fscanf(不断给我运行时错误/崩溃)。这是我的尝试(注意结构就是我将来如何使用文件中收集的数据):

int main(int argc, char **argv) {
int i = 0;
FILE *inf;
struct List list = SLL_new();

for(int i = 1; i < argc; i++){
    inf = fopen(argv[i], "r");
    int studentID = 0;
    int grade = 0;
    if(inf == NULL){
        printf("bad");
        return 1;
    }

    fscanf(inf, "%d,%d", &studentID, &grade);
    printf("%d, %d", studentID, grade);
}

}

}

这是我在顶部输入文件运行时的输出(预编辑,当我使用fread时):

C:\Users\witcher\Documents\NJIT\CS 288>a midterm01.csv
10012,85
11981,100
10728,65δ

我不认为这适用于更多的线条,无论如何,最后的特殊字符也让我感到困惑。我需要将这些值作为整数读取,但是如果我使用fread,那么我需要在以后的那些行中抛出它们。

1 个答案:

答案 0 :(得分:1)

你的阅读内容,并尝试打印字符串;

fscanf(inf, "%d,%d", &studentID, &grade);
printf("%s, %s", studentID, grade);

应该是

fscanf(inf, "%d,%d", &studentID, &grade);
printf("%d, %d", studentID, grade);

要阅读整个文件,请尝试

while (2 == fscanf(inf, "%d,%d", &studentID, &grade))
{
    printf("%d, %d", studentID, grade);
}
fclose(inf);