gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 19:07:43 26 4
gpt4 key购买 nike

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

10012,85
11981,100
10728,65

第一个数字是学生 ID,后面是考试成绩。我需要能够读取不定数量的这些行,但我不确定如何在 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,那么我需要稍后对它们进行强制转换或类似的操作。

最佳答案

您正在读取整数,并尝试打印字符串;

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);

关于c - 读取 C 中的大量行(csv 文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46494241/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com