看板 Programming 關於我們 聯絡資訊
各位前輩您好:   一個讀取csv檔的小程式,將檔案中的字串與數字分開,數字的部分OK,但字串的部分 一直被最後一筆覆蓋,苦找不出原因,煩請解惑。 讀取檔名:test.csv 內容物: AA,1 BB,2 CC,3 C部分程式: typedef struct{ char *name;//存字串 float x;//存數字 }node; node all[10]; main(){ FILE *fp; char read[15]; char *token; fp=fopen("test.csv","r"); int count=0,nc=0;//count用來判斷字串或數字(0是字串,1是數字); //nc用來依序存all[] while (!feof(fp)){ fscanf(fp,"%s",&read); token = strtok(read, ","); while( token != NULL ){ if (count++==0) all[nc].name=token;//count=0 存字串name //count=1 存數字x else all[nc].x=atof(token); token = strtok(NULL, ","); } count=0; nc++; } 後面列印all[].x都是正確的,但是all[].name的部分都是最後一筆,試了很久 找不到適當的方法改善,不知是否有人可解惑,感謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.224.232.187
L4ys:strcpy(all[nc].name, token); 114.45.156.39 07/28 02:04
roadeat:感謝樓上的回應,但替換後程式無法執行... 61.224.232.187 07/28 03:15
LPH66:你要切逗號 strtok 的第二參數應該要給 "," 114.26.44.185 07/28 04:22
※ 編輯: roadeat 來自: 1.165.114.157 (07/28 11:08)
roadeat:拍謝,我判斷那邊是用","但是我的char * 1.165.114.157 07/28 11:09
roadeat:在儲存到node時,最後一筆會覆蓋全部 1.165.114.157 07/28 11:09
roadeat:all[]的name全部都存到最後一筆CC 快暈倒 1.165.114.157 07/28 11:10
xblade:1.確認if數值到底多少 2.不需用到strtok吧. 123.192.2.13 07/28 12:34
roadeat:是為了切割字串,用","切 1.165.114.157 07/28 14:55