[問題] C 讀檔只讀取數字部分(已解決!!)

作者: cra2y37037 (30奈米)   2019-12-08 01:50:15
開發平台(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
作者: xxoooxx34567 (xxoooxx345678)   2019-12-08 02:18:00
ascii
作者: Schottky (順風相送)   2019-12-08 02:43:00
跳過就好啦~fgetc() 拿出來看看,如果不是數字就拋棄是數字的話再用 ungetc() 小心放回去,留給 fscanf() 讀
作者: dces4212 (flawless)   2019-12-08 03:52:00
可以舉例個非數字部份的字串嗎
作者: CoNsTaR ((const *))   2019-12-08 08:49:00
因為陣列沒滿?
作者: kaneson (Lance)   2019-12-08 09:29:00
%d 碰到非數字會一直卡在原地,迴圈跑完實際上什麼都沒讀fscanf 會回傳"成功的次數",所以失敗的時候再用讀%c來跳過就好啦
作者: ilms49898723 (LittleBird)   2019-12-08 17:27:00
Maybe something like this:int number;fscanf(fp, "%*[^-0-9]");while (fscanf(fp, "%d", &number) == 1) {fscanf(fp, "%*[^-0-9]");printf("Get %d\n", number);}
作者: Schottky (順風相送)   2019-12-08 20:01:00
感謝贈幣

Links booklink

Contact Us: admin [ a t ] ucptt.com