[爆卦]verilog fscanf用法是什麼?優點缺點精華區懶人包

為什麼這篇verilog fscanf用法鄉民發文收入到精華區:因為在verilog fscanf用法這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者Bluedicker (藍迪克)看板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

你可能也想看看

搜尋相關網站