C語言轉換說明符



格式轉換說明符printf() / scanf()

本文轉自:http://www.cnblogs.com/ilegend/articles/2258701.html

 

                  表一 轉換說明符及作爲結果的打印輸出

轉換說明

輸 出

%a

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

%A

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

%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 無符號十六進制整數

%X

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

%%

打印一個百分號

 

                  表二 printf() 修飾符

修飾符

意 義

標誌

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

digit(s)

字段寬度的最小值。如果該字段不能容納要打印的數或者字符串,系統會使用更寬的字段。示例:“%4d”

.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 intunsigned 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”

 

                  表四 ANSIC scanf()的轉換說明符

轉換說明符

意 義

%c

把輸入解釋成一個字符

%d

把輸入解釋成一個有符號十進制整數

%e%f%g%a

把輸入解釋成一個浮點數 (%aC99標準)

%E%F%G%A

把輸入解釋成一個浮點數 (%AC99標準)

%i

把輸入解釋成一個有符號十進制整數

%o

把輸入解釋成一個有符號八進制數

%p

把輸入解釋成一個指針(地址)

%s

把輸入解釋成一個字符串;輸入的內容以一個非空白字符作爲開始,並且包含知道下一個空白字符的全部字符

%u

把輸入解釋成一個無符號十進制整數

%x%X

把輸入解釋成一個有符號十六進制整數

 

                  表五 scanf()的轉換修飾符

修飾符

意 義

*

滯後賦值。示例:“%*d”

digit(s)

最大字段寬度;在達到最大字段寬度或者遇到第一個空白字符時(不管哪一個先發生都一樣)停止對輸入項的讀取。示例:“%10s”

hh

把整數讀作signed char unsigned char 。示例:“%hhd”“%hhu”

ll

把整數讀作long long或者 unsigned long long (C99)。示例:“%lld”“%llu”

hlL

“%hd”和“hi”指示該值將會存儲在一個short int中。

“%ho”“%hx”和“%hu”指示該值將會存儲在一個unsigned short int中。

“%ld”和“%li”指示該值將會存儲在一個long中。

“%lo”“%lx”和“%lu”指示該值將會存儲在一個unsigned long中。

“%le”“%lf”和“%lg”指示該值以double類型存儲。將L(而非l)efg一起使用指示該值以long double類型存儲。

如果沒有這些修飾符,diox指示int類型,而efg指示float類型。

 

發佈了16 篇原創文章 · 獲贊 40 · 訪問量 27萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章