看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: Win10, Linux, ...) win7 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) GCC 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 想請教,C在讀取檔案時能不能只讀取數字的部分, 因為原始開啟的txt檔中含有非數字的標題等等, 但我只需要取中間數字的部分讀入陣列就好,其他的不需要... google了好久都找不到看得懂的作法QQ 程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔) FILE *fp2; fp2=fopen("output1.txt","r"); int sortA[50],sortB[50]; for(i=0;i<50;i++){ fscanf(fp2,"%d",&sortA[i]); } for(i=0;i<50;i++){ fscanf(fp2,"%d",&sortB[i]); } fclose(fp2); 我是這樣讀檔的,因為我以為讀進來的時候有限定%d, 電腦就只會讀"數字"部分進來,結果把sortA、sortB印出來是亂碼Orz -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.224.234.72 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1575741020.A.C4A.html ※ 編輯: cra2y37037 (110.50.176.41 臺灣), 12/08/2019 01:54:58
xxoooxx34567: ascii12/08 02:18
印出來也不是ascii code的部份 我才覺得很疑惑QQ ※ 編輯: cra2y37037 (110.50.176.41 臺灣), 12/08/2019 02:26:28
Schottky: 跳過就好啦~ 12/08 02:43
Schottky: fgetc() 拿出來看看,如果不是數字就拋棄 12/08 02:44
Schottky: 是數字的話再用 ungetc() 小心放回去,留給 fscanf() 讀 12/08 02:44
用這個方法成功解決了!!萬份感激QQ 已寄出200p紅包了~感謝感謝orz
dces4212: 可以舉例個非數字部份的字串嗎 12/08 03:52
CoNsTaR: 因為陣列沒滿? 12/08 08:49
kaneson: %d 碰到非數字會一直卡在原地,迴圈跑完實際上什麼都沒 12/08 09:29
kaneson: 讀 12/08 09:29
kaneson: fscanf 會回傳"成功的次數",所以失敗的時候再用讀%c來跳 12/08 09:34
kaneson: 過就好啦 12/08 09:34
ilms49898723: Maybe something like this: 12/08 17:27
ilms49898723: int number; 12/08 17:28
ilms49898723: fscanf(fp, "%*[^-0-9]"); 12/08 17:28
ilms49898723: while (fscanf(fp, "%d", &number) == 1) { 12/08 17:28
ilms49898723: fscanf(fp, "%*[^-0-9]"); 12/08 17:28
ilms49898723: printf("Get %d\n", number); 12/08 17:28
ilms49898723: } 12/08 17:28
※ 編輯: cra2y37037 (125.231.127.164 臺灣), 12/08/2019 19:36:44 ※ 編輯: cra2y37037 (125.231.127.164 臺灣), 12/08/2019 19:37:26
Schottky: 感謝贈幣 12/08 20:01