我有一个输入.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,那么我需要在以后的那些行中抛出它们。
答案 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);