【C語言】printf函數詳解

C語言printf函數詳解

 1、相關基礎知識                                                 

請求printf()打印變量的指令取決於變量的類型,例如打印整數用%d符號,打印字符用%c符號,這些符號稱爲轉換說明(conversion specification),由於它們指定了如何把數據轉換成可顯示的形式git

 2、具體內容                                                     

printf的使用格式:

printfControl-stringitem1item2,。。。);函數

 

控制字符串(control-string):是一個描述項目如何打印的字符串,因此須要使用雙引號「」,以及應該爲每一個要打印的項目包含一個轉換說明符,且必須一一對應,不可多一少一,就算在最好狀況下也只能獲得無心義的值!測試

項目:item1item2等等都是要打印的項目,能夠是變量、常量,甚至能夠是須要計算的表達式ui

下列列出的是ANSI C標準printf()提供的各類轉換說明

轉換說明spa

輸出指針

%aci

浮點數、十六進制數字和p-記數法(C99)字符串

%Astring

浮點數、十六進制數字和P-記法(C99)it

%c

一個字符

%d

有符號十進制整數

%e

浮點數、e-記數法

%E

浮點數、E-記數法

%f

浮點數、十進制記數法

%g

根據數值不一樣自動選擇%f或%e%e格式在指數小於-4或者大於等於精度時使用

%G

根據數值不一樣自動選擇%f或%E%E格式在指數小於-4或者大於等於精度時使用

%i

有符號十進制數(與%d相同)

%o

無符號八進制整數

%p

指針

%s

字符串

%u

無符號十進制整數

%x

使用十六進制數字0f的無符號十六進制整數0f中是數字0,而不是字母o

%X

使用十六進制數字0F的無符號十六進制整數

%%

打印一個百分號

 

能夠在%和定義轉換字符之間經過插入修飾符對基本的轉換說明加以修改,若是使用了一個以上的修飾符,那麼它們應該與上表中出現的順序相同,也並非全部的組合都是可能的

 

 

下列列出的是printf()修飾符

修飾符

意義

標誌

五種標誌 (-、+、空格、0) 都將在後表中描述,可使用零個或多個標誌

例如:」%-10d」

digit(s)

 

字段寬度的最小值。若是該字段不能容納要打印的數或者字符串,系統會使用更寬的字段。示例:「%4d」,字段寬度包括符號,即12.235位!

即A.B形式中的A,下面的精度爲A.B形式中的B當位數不足會在前面自動補空格,超過正常顯示

.digit(s)

 

 

精度。對於%e%E%f轉換,是將要在小數點的右邊打印的數字的位數。對於%g%G轉換,是有效數字的最大位數。對於%s轉換,是將要打印的字符的最大數目。對於整數轉換,是將要打印的數字的最小位數;若是必要,要使用前導零來達到這個位數。只使用「.」表示其後跟隨一個零,因此%.f%.0f相同。示例:「%5.2f」打印一個浮點數,他的字段寬度爲5個字符,小數點後有兩個數字。

h

和整數轉換說明符一塊兒使用,表示一個short int 或者 unsigned short int 類型數值。

示例:「%hu」「%hx」「%6.4hd」

hh

 

和整數轉換說明符一塊兒使用,表示一個signed char 或者unsigned char類型數值。

示例:「%hhu」「%hhx」「%6.4hhd」

j

 

和整數轉換說明符一塊兒使用,表示一個intmax_tuintmax_t值。

示例:「%jd」「%8jX」

l(字母)

 

和整數說明符一塊兒使用,表示一個long int 或者unsigned long int 類型值。

示例:「%ld」「%8lu」

ll(字母)

 

和整數說明符一塊兒使用,表示一個long long int unsigned long long int 類型值 (C99)。

示例:「%lld」「%8llu」

L

 

和浮點轉換說明符一塊兒使用,表示一個long double值。

示例:「%Lf」「%10.4Le」

t

 

和整數轉換說明符一塊兒使用,表示一個ptrdiff_t(與兩個指針之間的差相對應的類型) (C99)

示例:「%td」「%12ti」

z

 

和整數轉換說明符一塊兒使用,表示一個size_t(sizeof返回的類型(C99)。

示例:「%zd」「%12zx」

下列列出的是printf()的標誌

標誌

意義

-

項目是左對齊的:也就是說,會把項目打印在字段的左側開始處

例如:」%-20s」

+

有符號的值若爲正,則顯示帶加號的符號:若爲負,則帶減號的符號

例如:」%+6.2f」

(空格)

有符號的值若爲正,則顯示帶前導空格(可是不顯示符號):若爲負,則帶減號符號。+標示會覆蓋空格標誌

例如:」% 6.2f」

#

使用轉換說明的可選形式。若爲%o格式,則以0開始;若爲%x%X格式,則以0x0X開始,對於全部的浮點形式,#保證了即便不限任何數字,也打印一個小數點字符。對於%g%G格式,它防止尾隨零被刪除。

例如:「%#o」、「%#8.0f」和「%+#10.3E

0

對於全部的數字格式,用前導零而不是用空格填充字段寬度。若是出現-標誌或者指定了精度(對於整數)則忽略該標誌。

例如:「%010d」和「%08.3f

 

 

 

printf函數也有一個返回值,它返回所打印的字符的數目,若是輸出錯誤,那麼printf()會返回一個負數,使用返回值得一個可能緣由是要檢查輸出錯誤,好比在讀入文件輸出的時候進行判斷

 3、分析總結                                                     

當打印較多內容時能夠採用下列兩種方法:

1、使用反斜槓符號 \  ,在上一行的末尾加上,下一行便可繼續,注意下一行必須刪除前面的空格,不然也會輸出前面的空格

 

例如:

    printf("asdasdad\

sadasdadad\n");          //輸出連續的字符串

    

    printf("asdasdad\

sadasdadad\n");     //輸出帶空格的字符串,asdasda      adadasdas

 

2、可直接使用多個雙引號拼接,可不用刪除前面的空格,建議使用

 

例如:

    printf("sadasda"

"dasdada"

         "dasdada"

"dasdada");            //輸出連續的asdadadadasdadadasdadadada

 

 

    

 4、實例測試                                                     

相關文章
相關標籤/搜索