Scanf函式的一些小細節

2021-06-22 19:38:10 字數 687 閱讀 2732

scanf函式式c語言的基本輸入函式,對於很對接觸過c語言的人都不會感到陌生,可是對於這個最基本的輸入函式,卻隱藏著一些容易讓人出錯的細節。

1、函式原型

int scanf(constchar*format,...);

2、format

format 指向的控制串由以下三類

字元組成:

格式控制符

空白字元

非空白字元

今天所要講的細節是當格式控制符為%c時,一些容易出錯的情況。眾所周知,在scanf()執行,使用者輸入乙個字元的時候,按下enter鍵輸入完畢, 其中windows系統中enter鍵有兩個字元(/r/n),/r會被scanf函式自動忽略掉,可是/n卻帶來了很多的問題。

(1)

#include#includeint main(void)

如果輸入的時候,直接按回車鍵,那麼變數j此時儲存的變數不是空白,而是『\n'

(2)

#include#includeint main(void)

當執行第乙個scanf時輸入'f',並按下回車,此時執行第二個scanf,不會提示輸入,而是繼續讀取之前緩衝區的引數'\n' 

因此在用scanf函式的時候需要特別注意緩衝區的清理,否則錯誤的值則會被賦給引數引起不必要的錯誤

scanf的一些小細節

格式字串的一般形式為 輸入資料寬度 長度 型別 其中有方括號的項為任選項。各項的意義如下。1 型別 表示輸入資料的型別,其格式符和意義如下表所示。格式字元意義 d輸入十進位制整數 o輸入八進位制整數 x輸入十六進製制整數 u輸入無符號十進位制整數 f或e輸入實型數 用小數形式或指數形式 c輸入單個字...

陣列 函式一些小細節

陣列的空間是連續。陣列大小是陣列的型別x陣列的個數。固定大小陣列是在程式設計時就確定的 動態陣列是在執行時分配的。組數是效率最高的資料結構,但需要空間連續,固不可以很大。什麼時候陣列和指標可以相同呢?所有作為 函式引數 的陣列名總是可以通過編譯器轉換為指標。在其他所有情況下 最有趣的情況就是 在乙個...

一些小細節

1 c中printf計算引數時是從右到左壓棧的。定義乙個陣列 int arr 再定義乙個指標 sint prt arr printf d n ptr 此時ptr指向第乙個元素6 ptr 123展開為 ptr ptr 123 ptr 此時ptr指向第二個元素7 printf d,d n ptr,ptr...