scanf 與getchar 區別的總結

2021-08-17 01:22:16 字數 650 閱讀 6121

第一:要注意不同的函式是否接受空格符、是否捨棄最後的回車符的問題!

讀取字元時:

scanf()以space、enter、tab結束一次輸入,不會捨棄最後的回車符(即回車符會殘留在緩衝區中);

getchar()以enter結束輸入,也不會捨棄最後的回車符;

讀取字串時:

scanf()以space、enter、tab結束一次輸入

gets()以enter結束輸入(空格不結束),接受空格,會捨棄最後的回車符!

第二:為了避免出現上述問題,必須要清空緩衝區的殘留資料,可以用以下的方法解決:

方法1:c語言裡提供了函式清空緩衝區,只要在讀資料之前先清空緩衝區就沒問題了!

這個函式是fflush(stdin)。

方法2:自己取出緩衝區裡的殘留資料。

scanf("%[^\n]",string);

**演示:

//統計在讀到檔案結尾之前讀取的字元數

//這裡可以看出除錯結果把回車鍵也算成乙個字元了

getchar()和scanf()的區別

大多數人只看getchar 名字,以為其返回值是char 型別。但是getchar 的確不是char 型別,而是int 型別,其原型如下 int getchar void getchar有乙個int型的返回值.當程式呼叫getchar時.程式就等著使用者按鍵.使用者輸入的字元被存放在鍵盤緩衝區中.直...

getchar 與scanf 的理解

1.getchar 是將輸入的字元都存到緩衝區中,直到輸入回車 將回車也存到緩衝區中 才讀取緩衝區中的字元,而且若輸入了多個字元到緩衝區中,後面的字元不用按回車便會依次讀取到後序的getchar 中。2.scanf 的程式片段如下 char a,b,c,d scanf c a scanf c b s...

關於getchar 與scanf 的用法總結

首先getchar 函式是輸入乙個字元,通常採用此函式將scanf 未處理的量進行釋放 char a,b 比如 scanf c a scanf c b printf a c,b c n a,b 此時你想讓a 1,b 2 你會這樣輸入1enter鍵加2加enter鍵 此時你會發現b的值為空,那是因為s...