c語言中簡單的輸入scanf函式和輸出printf函式,我們經常使用,也很熟悉,但有時卻還是會在這兩個地方犯錯。
#scanf()函式
功 能: 執行格式化輸入
用 法: int scanf(char *format[,argument,…]);
scanf()函式是通用終端格式化輸入函式,它從標準輸入裝置(鍵盤) 讀取輸入的資訊,可以讀入任何固有型別的資料並自動把數值變換成適當的機內格式。
其呼叫格式為: scanf("《格式化字串》",《位址表》);
#scanf()函式返回值
(1)返回正整數。表示正確輸入引數的個數。
(2)返回整數0。表示使用者的輸入不匹配,無法正確輸入任何值。
(3)返回-1。表示輸入流已經結束。
在windows下,使用者按下ctrl+z(會看到乙個^z字元)再按下回車(可能需要重複多次),就表示輸入結束;
linux/unix下使用ctrl+d表示輸入結束。
#include
intmain()
return0;
}
輸入 1 2 列印3
輸入 2 3 列印5
輸入ctrl+z 列印^z結束(windows)
#關於~的作用
在windows下,使用者按下ctrl+z(會看到乙個^z字元),會停止輸入流,scanf會返回-1。-1的補碼為11111111 11111111 11111111 11111111 一共4個位元組。~是c語言中的按位取反,
~(-1)結果為00000000 00000000 00000000 00000000剛好為整數0的補碼。
因此當輸入ctrl+z時,scanf會返回-1,while(~-1)==while(0),0為假,退出while迴圈。
c語言scanf返回值
1.scanf 函式是有返回值的,它的返回值可以分成三種情況 1 正整數,表示正確輸入引數的個數。例如執行 scanf d d a,b 如果使用者輸入 3 4 可以正確輸入,返回2 正確輸入了兩個變數 如果使用者輸入 3,4 可以正確輸入a,無法輸入b,返回1 正確輸入了乙個變數 2 0,表示使用者...
C語言scanf 函式返回值的問題
不經意中發現scanf 的返回值問題,自己試驗和了解了一下,一些所知與各位分享 void main 1.scanf 函式有返回值且為int型。2.scanf 函式返回的值為 正確按指定格式輸入變數的個數 也即能正確接收到值的變數個數。從上邊的例子中可以得到驗證,這裡用變數x接收scanf 函式的返回...
C語言scanf函式的返回值問題
不經意中發現scanf 的返回值問題,自己試驗和了解了一下,一些所知與各位分享 void main 1.scanf 函式有返回值且為int型。2.scanf 函式返回的值為 正確按指定格式輸入變數的個數 也即能正確接收到值的變數個數。從上邊的例子中可以得到驗證,這裡用變數x接收scanf 函式的返回...