[問題] 有關C語言讀檔案與切割

看板Programming作者 (www)時間12年前 (2013/07/28 01:06), 編輯推噓3(305)
留言8則, 4人參與, 最新討論串1/2 (看更多)
各位前輩您好:   一個讀取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

07/28 02:04, , 1F
strcpy(all[nc].name, token);
07/28 02:04, 1F

07/28 03:15, , 2F
感謝樓上的回應,但替換後程式無法執行...
07/28 03:15, 2F

07/28 04:22, , 3F
你要切逗號 strtok 的第二參數應該要給 ","
07/28 04:22, 3F
※ 編輯: roadeat 來自: 1.165.114.157 (07/28 11:08)

07/28 11:09, , 4F
拍謝,我判斷那邊是用","但是我的char *
07/28 11:09, 4F

07/28 11:09, , 5F
在儲存到node時,最後一筆會覆蓋全部
07/28 11:09, 5F

07/28 11:10, , 6F
all[]的name全部都存到最後一筆CC 快暈倒
07/28 11:10, 6F

07/28 12:34, , 7F
1.確認if數值到底多少 2.不需用到strtok吧.
07/28 12:34, 7F

07/28 14:55, , 8F
是為了切割字串,用","切
07/28 14:55, 8F
文章代碼(AID): #1Hy_u6zf (Programming)
文章代碼(AID): #1Hy_u6zf (Programming)