這也是在stdio.h中宣告的乙個函式,因此使用前必須加入#include 。呼叫scanf函式時,需要傳入變數的位址作為引數,scanf函式會等待標準輸入裝置(比如鍵盤)輸入資料,並且將輸入的資料賦值給位址對應的變數
函式原型:
int scanf(constchar*format,...);
scanf()函式返回成功賦值的資料項數,讀到檔案末尾出錯時則返回eof
函式 scanf() 是從
標準輸入流stdin (標準輸入裝置,一般是鍵盤)中讀內容的通用
子程式,可以說明的格式讀入多個字元,並儲存在對應位址的變數中。
其呼叫形式為: scanf("《格式說明字串》",《變數位址》);
變數位址要求有效,並且與格式說明的次序一致。
int age;
scanf("%d", &age);
l scanf函式時,會等待使用者的鍵盤輸入,並不會往後執行**。scanf的第1個引數是"%d",說明要求使用者以10進製的形式輸入乙個整數。這裡要注意,scanf的第2
個引數傳遞的不是
age變數,而是
age變數的位址
&age,&
是c語言中的乙個位址運算子
,可以用來獲取變數的位址
l 輸入完畢後,敲一下回車鍵,目的是告訴scanf函式我們已經輸入完畢了,scanf函式會將輸入的值賦值給age變數
1> 用scanf函式接收3個數值,每個數值之間用中劃線
-隔開scanf("%d-%d-%d",&a, &b, &c);
3個%d之間是用中劃線-隔開的,因此我們在每輸入乙個整數後都必須加個中劃線-,比如這樣輸入,不然在給變數賦值的時候會出問題
l 注意:數值之間的分隔符是任意的,不一定要用中劃線-,可以是逗號、空格、星號*、井號#等等,甚至是英文本母
// 逗號,
scanf("%d,%d,%d",&a, &b, &c); //
輸入格式:
10,14,20
// 井號#
scanf("%d#%d#%d",&a, &b, &c); //
輸入格式:
10#14#20
// 字母x
scanf("%dx%dx%d",&a, &b, &c); //
輸入格式:
10x14x20
2> 用scanf函式接收3個數值,每個數值之間用空格隔開
scanf("%d %d%d", &a, &b, &c);
3個%d之間是用空格隔開的,我們在每輸入乙個整數後必須輸入乙個分隔符,分隔符可以是空格、tab、回車
scanf的第乙個引數中不要包含\n,比如scanf(「%d\n」,&a); 這將導致scanf函式無法結束
這也是在stdio.h中宣告的乙個函式,因此使用前必須加入#include 。
printf()函式是格式化輸出函式, 一般用於向標準輸出裝置按規定格式輸出
資訊。在編寫程式時經常會用到此函式。
函式的原型為:int printf(const char *format, ...);
函式返回值為整型。若成功則返回輸出的字元數,輸出出錯則返回負值。
printf()函式的呼叫格式為:
printf("《格式化字串》", 《參量表》);
其中格式化
字串包括兩部分內容: 一部分是正常字元, 這些字元將按原
樣輸出; 另一部分是格式化規定字元, 以"%"開始, 後跟乙個或幾個規定字元,
用來確定輸出內容格式。
參量表是需要輸出的一系列引數, 其個數必須與格式化字串所說明的輸出
引數個數一樣多, 各引數之間用","分開, 且順序一一對應, 否則將會出現意想
不到的錯誤。
注意:函式printf從左往右讀取,然後將先讀取放到棧底,最後讀取的放在棧頂,處理時候是從棧頂開始的,所以我們看見的結果是,從右邊開始處理的。
除開%d,printf還支援很多格式符,如下表所示(紅色表示常用)
看下面**,利用printf同時輸出多個數值
1 #include 2注意看第9行,左邊的雙引號內有2個%d,age的值會代替第乙個%d進行輸出,no的值會代替第二個%d進行輸出,並且都是以十進位制形式輸出。輸出結果:3int
main()
4
1 #include 2注意第6行,右邊的是乙個整型常量11,它會代替%d的位置進行輸出。輸出結果:3int
main()
4
黑馬程式設計師 gets 和scanf
一 scanf與gets函式的區別 1.利用scanf函式從鍵盤接收一字元 或整數 時,它唯讀入字元 或整數 本身,而把字元 或整數 後的回車符留在輸入緩衝區內 2.gets函式從標準的輸入讀取,如果使用gets函式給字元陣列輸入字串時,字元陣列不能指定長度,因為,只要字元陣列的長度小於gets函式...
黑馬程式設計師 gets 和scanf
一 scanf與gets函式的區別 1.利用scanf函式從鍵盤接收一字元 或整數 時,它唯讀入字元 或整數 本身,而把字元 或整數 後的回車符留在輸入緩衝區內 2.gets函式從標準的輸入讀取,如果使用gets函式給字元陣列輸入字串時,字元陣列不能指定長度,因為,只要字元陣列的長度小於gets函式...
黑馬程式設計師 C語言基礎之 scanf函式
寫 的時候,我們可以看得出,幾乎每乙個c程式都會包括輸入輸出。輸入輸出是程式中最基本的操作之一。c語言本身並不提供輸入輸出的語句,輸入輸出操作是由c標準函式庫中的函式來實現的。今天就先說說輸入 scanf函式。scanf 函式與printf函式一樣,都不是c語言的關鍵字,而只是函式庫的名字,它們被定...