我正在制作世界杯球隊的鏈接串列,在加載球隊時,我需要從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
預期的輸出將是
國家:阿拉伯沙特阿拉伯 DtName:Herve DtSurname: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);
}
uj5u.com熱心網友回復:
您的格式字串會決議單個單詞,并且不會在,分隔符處停止。
不建議決議csv檔案(或任何一般檔案),fscanf()因為很難從錯誤中恢復,并且換行符與其他空白字符幾乎無法區分。while (!feof(charge))此外,用于運行此回圈是不正確的。
你可以學習為什么“while(!feof(file))”總是錯的?你應該告訴你老師這件事。用于此目的是一個常見的錯誤feof()。
您應該一次讀取一行fgets()并使用%nnn[^,]轉換說明符來決議字符欄位(nnn即最大欄位長度)。
這是一個例子:
#include <errno.h>
#include <stdio.h>
#include <string.h>
int main() {
char buf[256];
char countryAux[100];
char nameDTAux[100];
char surnameDTAux[100];
char groupAux;
int actualscoreaux, faseActualaux;
... // declare team, lis...
FILE *chargue = fopen("Precharge.csv", "r");
if (chargue == NULL) {
fprintf(stderr, "cannot open %s: %s\n", "Precharge.csv",
strerror(errno));
return 1;
}
while (fgets(buf, sizeof buf, chargue)) {
if (sscanf(buf, "
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/533185.html
標籤:CCSV文件文本
上一篇:是否有pdf的檔案
