我有一個 csv 檔案(以逗號分隔)。我想獲取此檔案中的資料以進行結構化。但它作業不正確。我想從第 2 行獲取資料(忽略標題)。對不起,如果我的英語不好。謝謝您的幫助。
#include <stdio.h>
struct Student
{
char id[7];
char firstname[50];
char lastname[50];
char gender[6];
char birthday[10];
char department[5];
char city[50];
};
int main()
{
struct Student st[100];
int n=0;
FILE *filename;
filename = fopen("student.csv","r");
while (!feof(filename))
{
fscanf(filename,"%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^,]",st[n].id,st[n].firstname,st[n].lastname,st[n].gender,st[n].birthday, st[n].department,st[n].city);
n ;
}
fclose(filename);
printf("%s\n",st[0].id);
printf("%s\n",st[0].firstname);
printf("%s\n",st[0].lastname);
printf("%s\n",st[0].gender);
printf("%s\n",st[0].birthday);
printf("%s\n",st[0].department);
printf("%s\n",st[0].city);
return 0;
}


uj5u.com熱心網友回復:
在每行末尾的 CSV 格式中,您通常沒有逗號,如果您的 CSV 檔案也是這種情況,請更改您提供的格式fscanf,
由此,
"%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^,]"
對此,
"%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^\n]"
如果您也嘗試讀取,該city欄位的下一個逗號,那么您最終將讀取錯誤的字串city\n6929245,st[n].city并導致讀取模式不正確,并可能導致段錯誤。
并且為了避免列印第一行,您可以跳過st陣列中的索引 0 ,因為您讀取的第一行將存盤在st陣列的第 0 個索引中,而從索引 1 開始將是您的資料。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/386844.html
標籤:C
上一篇:Argv不適用于終端上的字符指標
下一篇:f(&a)可以在C中運行嗎?
