printf()函式是格式化輸出函式,一般用於向標準輸出裝置按照規定格式輸出資訊。
printf()函式的格式為:
printf("《格式化字串》",《參量表》);
printf()函式的另一種函式格式為:
int printf(const char *format, 參量表) 函式把輸出寫入到標準輸出流 stdout ,並根據提供的格式產生輸出。
其中格式化字串包括兩部分的內容:
(1)一部分是正常的字元,這些字元將按照原樣輸出。
(2) 另一部分是格式化字元,以"%"號開始,後面跟乙個或幾個格式引數,用來確定 輸出內容的格式。
參量表:
參量表是需要輸出的一系列引數,其個數必須與前面的格式化字串中的格式引數個數一樣多
,參量表裡的各引數用 " , "符號分開,且參量表裡的順序與前面的格式化引數一 一對應。否則
會出現一些意想不到的錯誤。
printf函式對參量表中各量求值的順序是自右至左進行的。
但是必須注意,求值順序雖是自右至左,但是輸出順序還是從左至右,
printf()函式的返回值為實際控制輸出的字元數
例:
可以看出第乙個printf()它輸出了100,總共3個字元,返回值為3。
可以看出第乙個printf()的返回值為4,這是因為輸出的有100還有\n總共4個字元所以返回值為4.
輸出了兩個空格加100加\n總共6個字元。
下面舉一下printf()輸出的例子:
hello+空格是正常的字元按原樣輸出,後面的按照格式引數控制輸出。
例:
分析一下:輸出語句從內到外依次輸出,345先輸出,345是三個字元,所以輸出3,3是乙個字元輸出1。
scanf()函式是格式化輸入函式,它從標準輸入裝置(鍵盤)讀取輸入的資訊。
scanf()函式的格式為:
scanf("《格式化字串》",《位址表》);
scanf()函式的另一種函式格式為:
int scanf(const char *format, 《位址表》) ;函式從標準輸入流 stdin 讀取輸入,並根據提供的 format 來瀏覽輸入。
其中格式化字串包括三部分的內容:
(1)格式說明符:格式化說明符與printf()函式中的格式說明符基本相同。
(2) 空白字元:空白字元會使scanf()函式在讀操作中略去輸入中的乙個或多個空白字元。
(3) 非空白字元:乙個非空白字元會使scanf()函式在讀入時剔除掉與這個非空白字元相同的字元。
注意:位址表是需要讀入的所有變數的位址,而不是變數本身。
如果是一般的變數,通常要在變數前加上乙個" & 「(取位址符);但輸出時是變數名。
如果是陣列,用陣列名就代表了該陣列的首位址。
如果是指標,直接用指標名本身,不要加」 * "。
返回值:scanf()的返回值是成功匹配並賦值的輸入項個數。如果讀入資料時遇到了「檔案結束」則返回eof(-1)。
例子:
賦值了兩個返回值為2。
可以看出:空格自動剔除掉了(這裡的空格被剔除是因為格式不是字元,如果是字元就是另一種情況),「 ,」非空白字元在輸入時是必須按照格式化字串的格式輸入,它也被剔除了。
這裡輸出為這樣是因為,把1給a,空格給b,2給了c。
在輸入字元資料時。若格式控制串中無非格式字元,則認為所有輸入的總符號均為有效符。
這裡輸出這個是因為:把1給a,空格因為格式控制字串裡有剔除了,把2給b,這時候會有疑問,接下來有好幾個空格
就算乙個被剔除了還有好幾個可以給c,為啥是把3給呢?,這是因為scanf()再剔除空格時如果是連續的一併剔除了直到
是非空格賦值。
如果在格式控制中加入空格作為間隔,則輸入時各資料之間可加空格。
下面舉乙個比較重要的例子:
執行該程式,輸入乙個字元』 1 『後回車(要完成輸入必須回車),在執行scanf("%c",&a); 時』1』賦值給了a
但是回車符(\n)仍然留在緩衝區內,執行語句scanf("%c",&b);時,回車符(\n)賦值給了b。
要解決有兩種方法:
(1)將兩個scanf()語句合併到一塊。 例:scanf("%c%c",&a,&b);
(2)可以加乙個清除緩衝區的函式fflush(stdin)。
或:自己寫乙個
while(c=getchar()!=』\n』)
解釋:最後一次的字元 』 \n '導致迴圈不滿足,退出迴圈了,但這時getchar()已經執行了,也就是說,最後乙個字元 』 \n 』
也讀到了,那這一行的剩餘字元就都讀掉了,所以這樣做也可以消除緩衝區中的剩餘字元。
c語言中,scanf("%d", &a),在設計這個語法結構時為什麼要有位址符&,沒有行不行?
答:scanf是要把輸入的東西賦給引數,但是c語言是值傳遞,這樣函式內部的a和你傳給它的a
不是同乙個變數,達不到賦值的目的。所以要取位址來操作這樣才能改變a的值。
C語言基本輸入輸出
c 語言基本的輸入輸出 printf 轉換說明 c 單個字元 d 有符號十進位制整數 i 有符號十進位制整數 同 d u 無符號十進位制整數 p 指標 s 字串 f 浮點數,十進位制計數法 e 浮點數,e計數法 列印乙個 修飾符 標記 0 空格,可以使用多個或不使用 數字 最小字段寬度 4d 數字 ...
c 基本的輸入輸出
c 標準庫提供了一組豐富的輸入輸出功能 c 的i o發生在流中流是位元組序列,如果位元組流是從裝置 如鍵盤,磁碟驅動器,網路連線等 流向記憶體,這叫做輸入操作,如果位元組流是從記憶體流向裝置 如顯示屏,印表機,磁碟驅動器,網路連線等 這叫做輸出操作 i o庫標頭檔案 標頭檔案函式和描述 該檔案定義了...
C 基本的輸入輸出
c 標準庫提供了一組豐富的輸入 輸出功能,我們將在後續的章節進行介紹。本章將討論 c 程式設計中最基本和最常見的 i o 操作。c 的 i o 發生在流中,流是位元組序列。如果位元組流是從裝置 如鍵盤 磁碟驅動器 網路連線等 流向記憶體,這叫做輸入操作。如果位元組流是從記憶體流向裝置 如顯示屏 印表...