我正在制作一个世界杯球队的链接列表,当加载球队时,我需要从csv文件中预加载阅读数据,但读取2个单词的国家会出错
比如说
假设这是csv文件:
Arabia Saudita, Herve, Renard, Salman, C, 0, 1
首先,我读取了国家名称、dt名称、船长名称、组和两个数值,它们是程序的一部分,但输出如下所示:
Country:Arabia DT:Saudita Herve Renard Salman C 0 1 Captain: empty Group:Empty
预期输出为
国家:阿拉伯Saudita Dt姓名:埃尔韦Dt姓氏:Renard船长姓名:Salman集团:C语言
我试着用txt文件来做,但它是一样的,因为它读取空格,程序失败或打印错误
这是代码失败的一部分
FILE *chargue = fopen("Precharge.csv", "r");
while (!feof(charge)) {
fscanf(charge, "%s\n", countryAux);
chargecountry(&team, countryAux);
fscanf(charge, "%s\n", nameDTAux);
fscanf(charge, "%s\n", surnameDTAux);
chargenameDT(&team, surnameDTAux, nameDTAux);
chargeCapitan(&team, nameCapaux);
fscanf(charge, "%c\n", &groupAux);
chargegropu(&team, groupAux);
fscanf(charge, "%d\n", &actualscoreaux);
chargeactualscore(&team, actualscoreaux);
fscanf(charge, "%d\n", &faseActualaux);
chargeFase(&team, faseActualaux);
insert(lis, team);
forwards(lis);
}
1条答案
按热度按时间py49o6xq1#
您的格式字串会剖析单字,而且不会在
,
分隔符号处停止。不建议使用
fscanf()
解析csv文件(或任何文件),因为很难从错误中恢复,并且换行符与其他白色字符几乎无法区分。此外,使用while (!feof(charge))
运行此循环是不正确的。你可以学习Why is “while( !feof(file) )” always wrong?,你应该告诉你的老师这一点。这是一个常见的错误使用
feof()
为这个目的。您应该改为使用
fgets()
一次读取一行,并使用%nnn[^,]
转换说明符来解析字符字段(nnn
是最大字段长度)。以下是一个示例: