作者cra2y37037 (30奈米)
看板C_and_CPP
標題[問題] C 讀檔只讀取數字部分(已解決!!)
時間Sun Dec 8 01:50:15 2019
開發平台(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://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1575741020.A.C4A.html
※ 編輯: cra2y37037 (110.50.176.41 臺灣), 12/08/2019 01:54:58
1F:推 xxoooxx34567: ascii12/08 02:18
印出來也不是ascii code的部份 我才覺得很疑惑QQ
※ 編輯: cra2y37037 (110.50.176.41 臺灣), 12/08/2019 02:26:28
2F:→ Schottky: 跳過就好啦~ 12/08 02:43
3F:→ Schottky: fgetc() 拿出來看看,如果不是數字就拋棄 12/08 02:44
4F:→ Schottky: 是數字的話再用 ungetc() 小心放回去,留給 fscanf() 讀 12/08 02:44
用這個方法成功解決了!!萬份感激QQ
已寄出200p紅包了~感謝感謝orz
5F:推 dces4212: 可以舉例個非數字部份的字串嗎 12/08 03:52
6F:推 CoNsTaR: 因為陣列沒滿? 12/08 08:49
7F:推 kaneson: %d 碰到非數字會一直卡在原地,迴圈跑完實際上什麼都沒 12/08 09:29
8F:→ kaneson: 讀 12/08 09:29
9F:推 kaneson: fscanf 會回傳"成功的次數",所以失敗的時候再用讀%c來跳 12/08 09:34
10F:→ kaneson: 過就好啦 12/08 09:34
11F:推 ilms49898723: Maybe something like this: 12/08 17:27
12F:→ ilms49898723: int number; 12/08 17:28
13F:→ ilms49898723: fscanf(fp, "%*[^-0-9]"); 12/08 17:28
14F:→ ilms49898723: while (fscanf(fp, "%d", &number) == 1) { 12/08 17:28
15F:→ ilms49898723: fscanf(fp, "%*[^-0-9]"); 12/08 17:28
16F:→ ilms49898723: printf("Get %d\n", number); 12/08 17:28
17F:→ 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
18F:推 Schottky: 感謝贈幣 12/08 20:01