關於scanf的返回值

2021-08-18 08:31:25 字數 1115 閱讀 6767

在a題的時候,我們經常會在while()語句中寫scanf的返回值,例如while(scanf("%d",&x)==1)這樣的語句,今天我們就來說關於scanf的返回值問題。眾所周知scanf()返回的是輸入個數,但當輸入不匹配或者格式化引數與實參不匹配時,scanf又是如何返回引數值的,我們來研究研究

我們先看如下**:

(1)當匹配格式正確,而後面的實參有多餘時

#includeint main()
我們輸入 1回車,輸入2回車,然後結果就顯示為2

我們由此可以得出結論,當匹配格式正確,而後面的實參有多餘時,多餘的實參會被丟棄,返回的是匹配個數

(2)當匹配格式正確,而後面的實參卻比前面的格式化引數少時

#includeint main()
我們執行**可以發現我們可以輸入3個數字,但是程式終止在scanf語句這裡,後面的並沒有執行

由此我們可以得出結論,當匹配格式正確,而後面的實參卻比前面的格式化引數少時,scanf()語句在對應的格式化引數輸入後,程式即終止

(3)當匹配格式不正確時,格式化引數與實參個數相同

#includeint main()
執行以上**,我們分別對以下資料進行測試:(我們每次出入並不是按空格鍵,而是回車鍵)

a --->0

1 a------>1

1 2 a------>2

我們發現scanf語句返回的是正確匹配的個數,並在輸入格式與格式化引數不匹配時,scanf語句結束輸入,並向下執行

(4)當匹配格式不正確,格式化引數與實參個數不相同時

int sum=scanf("%d %d %d",&x,&y);

例如這條語句,我們輸入1 2 a 時sum得到值2,而我們輸入1 2 3 時,scanf這裡程式終止,所以這種情況scanf的返回值是在錯誤輸入前正確與格式化引數匹配的個數

關於eof和scanf返回值

eof不是乙個字元或者數字什麼的,而是scanf 函式的乙個返回值。所以scanf c c 再判斷 c eof 的做法是無效的,因為scanf 根本不會把eof當作乙個字元寫進c 正確的判斷條件應該寫作以下形式 scanf c c eof 可以看出eof就是scanf 的返回值 下面提供用getch...

scanf 的的返回值

在c語言中scanf 函式主要是用來讀入函式的值,比如語句scanf d num scanf函式讀入乙個值,並把它儲存到num中。scanf 函式成功讀取乙個專案,它就會返回值1 如果它沒有讀取任何專案 當它期望乙個數字而你鍵入的卻是了乙個非數字的字元或者字串就會發生這種情況 scanf 聚會返回值...

scanf 函式的返回值

1.scanf 函式是有返回值的,它的返回值可以分成三種情況 1 正整數,表示正確輸入引數的個數。例如執行 scanf d d a,b 如果使用者輸入 3 4 可以正確輸入,返回2 正確輸入了兩個變數 如果使用者輸入 3,4 可以正確輸入a,無法輸入b,返回1 正確輸入了乙個變數 2 0,表示使用者...