05 黑馬程式設計師 scanf函式 printf函式

2021-06-21 10:52:32 字數 2347 閱讀 8515

這也是在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

3int

main()

4

注意看第9行,左邊的雙引號內有2個%d,age的值會代替第乙個%d進行輸出,no的值會代替第二個%d進行輸出,並且都是以十進位制形式輸出。輸出結果:

1 #include 2

3int

main()

4

注意第6行,右邊的是乙個整型常量11,它會代替%d的位置進行輸出。輸出結果:

黑馬程式設計師 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語言的關鍵字,而只是函式庫的名字,它們被定...