【发布时间】:2016-08-17 16:15:07
【问题描述】:
我一直在开发一个程序,该程序希望从 csv 文件中读取 10 行并将名称和等级分开。我已经使用了这里提供的文档Reading values from CSV file into variables
不幸的是,我的代码在与sscanf 语句一致时抛出了SIGSEGV。我试图删除%[^,]和%f之间的,,之后它可以工作,但只能得到名字,而不是成绩,这违背了目的。
#include <stdio.h>
#include <stdlib.h>
int main() {
char str[10][30], names[10][20];
FILE *fp;
int i;
float grades[10];
fp = fopen("names.txt", "rt");
for (i = 0; i < 10; i++) {
fgets(str[i], 30, fp);
sscanf(str[i], "%[^,], %f", &names[i], grades[i]);
printf("%s ", names[i]);
printf("%f ", grades[i]);
};
}
这是csv文件的内容:
Bob,8
Carla,7
Jack,5
Julie,3
Goncalo,9
Vera,6
Jesse,8
James,8
Francis,10
Monica,6
感谢您的帮助,如果您需要任何其他信息,请随时询问。
【问题讨论】:
-
它有效,但为什么这里不需要和号?而在另一个线程中它在那里?
-
我明白了,谢谢你的快速回答!