Printf輸出格式控制

2021-03-03 21:35:45 字數 4526 閱讀 6308

int printf(const char *format,[argument]);

format 引數輸出的格式,定義格式為:

%[flags][width][.perc] [f|n|h|l]type

規定資料輸出方式,具體如下:

1.type 含義如下:

整數%d 整數的引數會被轉成一有符號的十進位制數字

%u 整數的引數會被轉成一無符號的十進位制數字

%o 整數的引數會被轉成一無符號的八進位制數字

%x 整數的引數會被轉成一無符號的十六進製制數字,並以小寫abcdef表示

%x 整數的引數會被轉成一無符號的十六進製制數字,並以大寫abcdef表示浮點型數

%f double 型的引數會被轉成十進位制數字,並取到小數點以下六位,四捨五入。

%e double型的引數以指數形式列印,有乙個數字會在小數點前,六位數字在小數點後,而在指數部分會以小寫的e來表示。

%e 與%e作用相同,唯一區別是指數部分將以大寫的e 來表示。

%g double 型的引數會自動選擇以%f 或%e 的格式來列印,其標準是根據欲列印的數值及所設定的有效位數來決定。

%g 與%g 作用相同,唯一區別在以指數形態列印時會選擇%e 格式。

字元及字串

%c 整型數的引數會被轉成unsigned char型列印出。

%s 指向字串的引數會被逐字輸出,直到出現null字元為止

%p 如果是引數是「void *」型指標則使用十六進製制格式顯示,near指標表示為:***x,far 指標表示為:***x:yyyy

%% 顯示百分號本身

%n 相連參量應是乙個指標,其中存放已寫字元的個數

2.flags 規定輸出格式,取值和含義如下:

無右對齊,左邊填充0和空格

- 左對齊,右邊填充空格

+ 在數字前增加符號 + 或 -

乙個空格只對負數顯示符號

# 當type=c,s,d,i,u時沒有影響

type=o,x,x時,分別在數值前增加'0',"0x","0x"

type=e,e,f時,總是使用小數點

type=g,g時,除了數值為0外總是顯示小數點

3.width 用於控制顯示數值的寬度,取值和含義如下

n(n=1,2,3...) 寬度至少為n位,不夠以空格填充

0n(n=1,2,3...) 寬度至少為n位,不夠左邊以0填充 *

格式列表中,下乙個引數還是width

4..prec 用於控制小數點後面的位數,取值和含義如下:

無按預設精度顯示

0 當type=d,i,o,u,x時,沒有影響

type=e,e,f時,不顯示小數點

n(n=1,2,3...) 當type=e,e,f時表示的最大小數字數

type=其他,表示顯示的最大寬度 .*

格式列表中,下乙個引數還是width

5.f|n|h|l 表示指標是否是遠指標或整數是否是長整數

f 遠指標

n 近指標

h短整數或單精度浮點數

l 長整數或雙精度浮點數

1.一般格式

printf(格式控制,輸出表列)

例如:printf("i=%d,ch=%c\n",i,ch);

說明:(1)「格式控制」是用雙撇號括起來的字串,也稱「轉換控制字串」,它包括兩種資訊:

①格式說明:由「%」和格式字元組成,它的作用是將輸出的資料轉換為指定的格式輸出。

②普通字元,即需要原樣輸出的字元。

(2)「輸出表列」是需要輸出的一些資料,可以是表示式

(3)printf函式的一般形式可以表示為

printf(引數1,引數2,……,引數n)

功能是將引數2~引數n按引數1給定的格式輸出

2.格式字元(9種)

(1)d(或i)格式符。用來輸出十進位制整數,有以下幾種用法:

①%d,按整型資料的實際長度輸出。

②%md,m為指定的輸出欄位的寬度。如果資料的位數小於m,則左端補以空格,若大於m,則按實際位數輸出。

③%ld(%mld 也可),輸出長整型資料。

例如:long a=123456;

printf("%ld",a);

(2)o格式符,以八進位制數形式輸出整數。格式:%o,%mo,%lo,%mlo都可。

(3)x(或x)格式符,以十六進製制數形式輸出整數。格式:%x,%mx,%lx,%mlx都可。

(4)u格式符,用來輸出unsigned型資料,即無符號數,以十進位制數形式輸出。格式:%u,%mu,%lu都可。

參見:li4-3.c

(5)c格式符,用來輸出乙個字元。格式:%c,%mc都可。

(6)s格式符,用來輸出乙個字串。格式:%s,%ms,%-ms,%m.ns,%-m.ns都可。

參見:li4-5.c

(7)f格式符,用來輸出實數(包括單、雙精度),以小數形式輸出。格式:%f,%m.nf,%-m.nf都可。

注意:單精度實數的有效位數一般為7位,雙精度為16位。

參見:li4-6.c

li4-7.c

li4-8.c

(8)e(或e)格式符,以指數形式輸出實數。格式:%e,%m.ne,%-m.ne都可。

(9)g(或g)格式符,用來輸出實數,它根據數值的大小,自動選f格式或e格式(選擇輸出時佔寬度較小的一種)。

3.說明

(1)除了x、e、g(用大寫字母表示)外,其他格式字元必須用小寫字母;

(2)「格式控制」字串內可以包含轉義字元;

(3)如果想輸出字元「%」,則應該在「格式控制」字串中用連續兩個%表示,如:

printf("%f%%",1.0/3);

(4)格式字元表參見下表

表4.1 printf格式字元

格式字元說明

d,i 以帶符號的十進位制形式輸出整數(正數不輸出符號)

o 以八進位制無符號形式輸出整數(不輸出前導符0)

x,x 以十六進製制無符號形式輸出整數(不輸出前導符0x),用x則輸出十六進製制數的a~f時以小寫形式輸出,用x時,則以大寫字母輸出

u 以無符號十進位制形式輸出整數

c 以字元形式輸出,只輸出乙個字元

s 輸出字串

f 以小數形式輸出單、雙精度數,隱含輸出6位小數

e,e 以指數形式輸出實數

g,g 選用%f或%e格式中輸出寬度較短的一種格式,不輸出無意義的0

表4.2 printf的附加格式說明字元

字元說明字母l用於長整型整數,可加在格式符d、o、x、u前面

m(代表乙個正整數)

資料最小寬度

n(代表乙個正整數)

對實數,表示輸出n位小數;對字串,表示擷取的字元個數

-  輸出的數字或字元在域內向左靠

用途寫格式化輸出。

語法printf format [ argument ... ]

描述printf 命令轉換、格式化並寫 argument 引數到標準輸出。argument 引數是由 format 引數控制格式化的。格式化輸出行不能超出 line_max 位元組長度。

下列環境變數影響 printf 命令的執行:

lang 在 lc_all 和相應的環境變數(以 lc_ 開頭)沒有指定語言環境時,確定語言環境編目使用的語言環境。

lc_all 確定用於覆蓋由 lang 或其它任何 lc_ 環境變數設定的任何語言環境編目值的語言環境。

lc_ctype 確定把文字位元組資料順序解釋為字元的語言環境;例如,單一位元組對應多位元組字元的引數。

lc_messages 確定寫訊息使用的語言。

lc_numeric 確定數字格式編排的語言環境。此環境變數影響使用 e、e、f、g 和 g 轉換字元編寫的數字的格式。

format 引數是包含三種物件型別的乙個字串:

* 無格式字元複製到輸出流。

* 轉換規範,每個規範導致在值引數列表中檢索 0 個或更多個項。

* 以下轉義序列。在複製到輸出流時,這些序列導致它們的相關操作在有此功能的裝置上顯示:

\\ 反斜槓

\a 警告

\b 退格

\f 換頁

\n 換行

\r 回車

\t 跳格

\v 垂直跳格

\ddd ddd 是 1、2 或 3 位八進位制數字。這些轉義序列作為由八進位制數指定的具有數字值的位元組顯示。

argument 引數是乙個或多個字串的列表,它在 format 引數的控制下被寫到標準輸出。

format 引數在必要的情況下會經常重新使用以滿足 argument 引數。將好像提供了空字串 argument 一樣評估任何額外的 c 或者 s 轉換規範;其它額外轉換規範將好像提供了 0 argument 一樣評估。此處 format 引數不包含轉換規範僅出現 argument 引數,結果是不確定的。

每個 format 引數中的轉換規範都具有如下順序的語法:

1. % (百分號)。

2. 零或更多的選項,修改轉換規範的含義。選項字元和它們的含義是:

- 轉換結果在字段中左對齊。

+ 符號轉換結果常以符號(+ 或者 -)開始。

空格如果符號轉換的第乙個字元不是符號,結果的字首將是空格。如果空格和 + 選項字元都顯示,則忽略空格選項字元。

c語言printf輸出格式大全

1 轉換說明符 a a 浮點數 十六進製制數字和p p 記數法 c99 c字元 d有符號十進位制整數 f浮點數 包括float和doulbe e e 浮點數指數輸出 e e 記數法 g g 浮點數不顯無意義的零 0 i有符號十進位制整數 與 d相同 u無符號十進位制整數 o八進位制整數 e.g.01...

C輸出格式控制

showpoint 0x0400,不管小數點和尾部的0是否可省略不寫,都輸出小數點和0 showpos 0x0800,在正數前面輸出 號 skipws 0x1000,不讀入空白字元 空格,製表符 t,回車 r,和換行 n unitbuf 0x2000,每次寫入資料都重新整理到相應裝置 upperca...

輸出格式控制符

c語言printf 輸出格式控制 1 轉換說明符 a a 浮點數 十六進製制數字和p p 記數法 c99 c 字元 d 有符號十進位制整數 f 浮點數 包括float和doulbe e e 浮點數指數輸出 e e 記數法 g g 浮點數不顯無意義的零 0 i 有符號十進位制整數 與 d相同 u 無符...