[問題] 請問有關於sscanf
我最近在用C/C++開發程式,正準備要寫一個讀取檔案的函數
假設有一行我想要讀入兩筆資料
123 321
我是寫成
fgets(line, sizeof(line), INPUT);
check=sscanf(line,"%d %d", &a, &b);
if(check==2) printf("read line succeed");
else printf("error in inputfile");
這樣子可以避免輸入資料不足(ex:只有輸入123)
或著資料類別錯誤(ex:123 abc)的狀況
但是萬一資料比預設讀取的要多的時候,該怎麼寫會比較好呢?
比方說使用者輸入的資料是123 321 456這三筆資料(或三筆以上),
雖然我寫的程式可以正確讀到前兩筆資料,第三筆之後的資料會忽視掉
但是我想要提醒使用者去檢查輸入檔,此時該怎麼做呢
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.122.45
→
10/03 15:46, , 1F
10/03 15:46, 1F
→
10/03 16:03, , 2F
10/03 16:03, 2F
→
10/03 16:04, , 3F
10/03 16:04, 3F
→
10/03 17:04, , 4F
10/03 17:04, 4F
我想到方法了,不用檢查%s讀到的內容,
因為如果最後一個位元是換行或是空格%s也抓不著,
此時檢查sscanf的回傳值即可
check=sscanf(line,"%d %d %s",&a,&b,&c);
如果input是
123 321,只能抓到前兩個,check =2,
123 321 ,雖然比前一個例子多了一個空格,但還是只抓到兩組資料,check=2,
123 321 12345,抓到三組資料,所以check=3,
只要check!=2,就算是不常規的輸入資料
※ 編輯: BANDITCS 來自: 140.114.122.45 (10/03 17:21)
→
10/04 01:58, , 5F
10/04 01:58, 5F