[問題] C 讀檔只讀取數字部分(懸賞200p)

看板C_and_CPP作者 (30奈米)時間4年前 (2019/12/08 01:50), 4年前編輯推噓7(7011)
留言18則, 6人參與, 4年前最新討論串1/1
開發平台(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

12/08 02:18, 4年前 , 1F
ascii
12/08 02:18, 1F
印出來也不是ascii code的部份 我才覺得很疑惑QQ ※ 編輯: cra2y37037 (110.50.176.41 臺灣), 12/08/2019 02:26:28

12/08 02:43, 4年前 , 2F
跳過就好啦~
12/08 02:43, 2F

12/08 02:44, 4年前 , 3F
fgetc() 拿出來看看,如果不是數字就拋棄
12/08 02:44, 3F

12/08 02:44, 4年前 , 4F
是數字的話再用 ungetc() 小心放回去,留給 fscanf() 讀
12/08 02:44, 4F
用這個方法成功解決了!!萬份感激QQ 已寄出200p紅包了~感謝感謝orz

12/08 03:52, 4年前 , 5F
可以舉例個非數字部份的字串嗎
12/08 03:52, 5F

12/08 08:49, 4年前 , 6F
因為陣列沒滿?
12/08 08:49, 6F

12/08 09:29, 4年前 , 7F
%d 碰到非數字會一直卡在原地,迴圈跑完實際上什麼都沒
12/08 09:29, 7F

12/08 09:29, 4年前 , 8F
12/08 09:29, 8F

12/08 09:34, 4年前 , 9F
fscanf 會回傳"成功的次數",所以失敗的時候再用讀%c來跳
12/08 09:34, 9F

12/08 09:34, 4年前 , 10F
過就好啦
12/08 09:34, 10F

12/08 17:27, 4年前 , 11F
Maybe something like this:
12/08 17:27, 11F

12/08 17:28, 4年前 , 12F
int number;
12/08 17:28, 12F

12/08 17:28, 4年前 , 13F
fscanf(fp, "%*[^-0-9]");
12/08 17:28, 13F

12/08 17:28, 4年前 , 14F
while (fscanf(fp, "%d", &number) == 1) {
12/08 17:28, 14F

12/08 17:28, 4年前 , 15F
fscanf(fp, "%*[^-0-9]");
12/08 17:28, 15F

12/08 17:28, 4年前 , 16F
printf("Get %d\n", number);
12/08 17:28, 16F

12/08 17:28, 4年前 , 17F
}
12/08 17:28, 17F
※ 編輯: cra2y37037 (125.231.127.164 臺灣), 12/08/2019 19:36:44 ※ 編輯: cra2y37037 (125.231.127.164 臺灣), 12/08/2019 19:37:26

12/08 20:01, 4年前 , 18F
感謝贈幣
12/08 20:01, 18F
文章代碼(AID): #1Tw-PSnA (C_and_CPP)