看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VS 2010 問題(Question): 想請問大家 我想要讀取一個txt檔,不同的資料用逗號隔開 內容如下 S1,Sam,20,London S2,Jay,30,Paris S3,Kate,20,London S4,May,10,Taipei 要把每筆資料指定到不同的變數中 可是我用下列程式片段讀取 第一列的資料會全部跑到S[i].S裡面去,之後就開始出現亂碼 i=0; while(!feof(fptr_s)) { fscanf(fptr_s ,"%s,%s,%d,%s\n", S[i].S, S[i].SNAME, &S[i].STATUS, S[i].CITY) ; i++; } fclose(fptr_s); 但如果把txt檔裡面的逗號改成空格 fscanf改成: fscanf(fptr_s ,"%s %s %d %s", S[i].S, S[i].SNAME, &S[i].STATUS, S[i].CITY); 資料就會存到對應的變數中 所以我覺得是逗號處理的問題 請問要怎麼修改呢? 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.126.148.187 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1443946182.A.6F6.html
x000032001: 改用strtok?10/04 17:01
謝謝 我會試試看,不過希望有更直覺的做法^^
tsoahans: 改成fscanf(fptr_s,"%[^,],%[^,],%d,%s\n",S[i].S,...); 10/04 17:07
謝謝大大 改了之後真的可以把資料存入變數了 想請問一下%[^,]是什麼意思? 剛剛只查到^是XOR ※ 編輯: Bluedicker (59.126.130.188), 10/04/2015 17:38:17
tsoahans: %[^,]是指只讀到','之前 詳細可以查sscanf、regex的用法10/04 17:46
EdisonX: %[^,] 將逗號前的字串做斷句,存到 S[i].s10/04 17:47
瞭解了 第一次看到這樣的用法 謝謝你們^_^ ※ 編輯: Bluedicker (39.10.160.31), 10/04/2015 17:55:05
twitcha101: 我是算符號位和刪除已取得的單字跑回圈讀全部,你goog10/04 23:26
twitcha101: le看看讀.csv檔,可能會有你要的10/04 23:26
好哦 謝謝^_^
stupid0319: 遇到這種我都直接土炮寫迴圈自己分開10/05 11:41
這樣有點累吧XD
feeya: strtok萬用10/05 21:31
朋友也都覺得用strtok比較好 我要多學學了... ※ 編輯: Bluedicker (39.10.68.48), 10/06/2015 10:52:57
yvb: strtok() 的問題在於, 連寫的多個分隔符號, 只當做一次分隔. 10/06 14:53
yvb: 若是可能存在空欄位, 那 strtok() 也許就不適合使用了. 10/06 14:58