格式化的規則:
·如果要列印指標,使用
%p格式符
,這樣可以使程式在
32位及
64位平台上均可執行 ·
如果列印乙個計數的字串,使用
%z (ansi)
或者%wz (unicode),
它可以正確列印出非空結束的字串 ·
如果需要列印
unicode值,
必須確認程式執行在
dispatch_level
級別之下 ·
每個輸出呼叫限制在
512位元組內
1.轉換說明符
%a(%a)
浮點數、十六進製制數字和
p-(p-)
記數法(c99)
%c
字元%d
有符號十進位制整數
%f
浮點數(
包括float
和doulbe)
%e(%e)
浮點數指數輸出
[e-(e-)
記數法]
%g(%g)
浮點數不顯無意義的零
"0"%i
有符號十進位制整數(與
%d相同
)%u
無符號十進位制整數
%o
八進位制整數
e.g. 0123
%x(%x)
十六進製制整數
0f(0f) e.g. 0x1234
%p
指標%s
字串%% "%"
2.標誌
左對齊:
"-" e.g. "%-20s"
右對齊:
"+" e.g. "%+20s"
空格:若符號為正,則顯示空格,負則顯示
"-" e.g. "% 6.2f" #:對
c,s,d,u
類無影響;對
o類,在輸出時加字首o;對
x類,在輸出時加字首0x;
對e,g,f
類當結果有小數時才給出小數點。
3.格式字串(格式)
[標誌][輸出最少寬度][.精度][長度]型別"%
-md"
:左對齊,若
m比實際少時,按實際輸出。
"%m.ns"
:輸出m
位,取字串(左起
)n位,左補空格,當
n>m or m
省略時m=n
e.g. "%7.2s"
輸入china
輸出" ch"
"%m.nf"
:輸出浮點數,
m為寬度,
n為小數點右邊數字
e.g. "%3.1f"
輸入3852.99
輸出3853.0
長度:為h短整形量
,l為長整形量
printf
的格式控制的完整格式:
% - 0 m.n l
或h
格式字元
下面對組成格式說明的各項加以說明:①%
:表示格式說明的起始符號,不可缺少。②-
:有-表示左對齊輸出,如省略表示右對齊輸出。③0
:有0表示指定空位填
0,如省略表示指定空位不填。
④m.n:m
指域寬,即對應的輸出項在輸出裝置上所佔的字元數。
n指精度。用於說明輸出的實型數的小數字數。為指定
n時,隱含的精度為
n=6位。⑤l
或h:l
對整型指
long
型,對實型指
double型。h
用於將整型的格式字元修正為
short
型。---------------------------------------
格式字元
格式字元用以指定輸出項的資料型別和輸出格式。①d
格式:用來輸出十進位制整數。有以下幾種用法:
%d:按整型資料的實際長度輸出。
%md:
m為指定的輸出欄位的寬度。如果資料的位數小於
m,則左端補以空格,若大於
m,則按實際位數輸出。
%ld:輸出長整型資料。②o
格式:以無符號八進位制形式輸出整數。對長整型可以用
"%lo"
格式輸出。同樣也可以指定字段寬度用
「%mo」
格式輸出。
例:main()
執行結果:
-1,177777
程式解析:
-1在記憶體單元中(以補碼形式存放)為
(1111111111111111)2
,轉換為八進位制數為
(177777)8。③
x格式:以無符號十六進製制形式輸出整數。對長整型可以用
"%lx"
格式輸出。同樣也可以指定字段寬度用
"%mx"
格式輸出。④u
格式:以無符號十進位制形式輸出整數。對長整型可以用
"%lu"
格式輸出。同樣也可以指定字段寬度用
「%mu」
格式輸出。⑤c
格式:輸出乙個字元。⑥s
格式:用來輸出乙個串。有幾中用法
%s:例如
:printf("%s", "china")
輸出"china"
字串(不包括雙引號)。
%ms:輸出的字串佔
m列,如字串本身長度大於
m,則突破獲
m的限制
,將字串全部輸出。若串長小於
m,則左補空格。
%-ms
:如果串長小於
m,則在
m列範圍內,字串向左靠,右補空格。
%m.ns
:輸出佔
m列,但只取字串中左端
n個字元。這
n個字元輸出在
m列的右側,左補空格。
%-m.ns
:其中m、n
含義同上,
n個字元輸出在
m列範圍的左側,右補空格。如果
n>m
,則自動取
n值,即保證
n個字元正常輸出。⑦f
格式:用來輸出實數(包括單、雙精度),以小數形式輸出。有以下幾種用法:
%f:不指定寬度,整數部分全部輸出並輸出
6位小數。
%m.nf
:輸出共佔
m列,其中有
n位小數,如數值寬度小於
m左端補空格。
%-m.nf
:輸出共佔
n列,其中有
n位小數,如數值寬度小於
m右端補空格。⑧e
格式:以指數形式輸出實數。可用以下形式:
%e:數字部分(又稱尾數)輸出
6位小數,指數部分佔5位或
4位。%m.ne
和%-m.ne:m
、n和」-」
字元含義與前相同。此處
n指資料的數字部分的小數字數,
m表示整個輸出資料所佔的寬度。⑨g
格式:自動選
f格式或
e格式中較短的一種輸出,且不輸出無意義的零。
---------------------------------------
關於printf
函式的進一步說明:
如果想輸出字元
"%",
則應該在
「格式控制
」字串中用連續兩個
%表示,如
:printf("%f%%", 1.0/3);
輸出0.333333%
。---------------------------------------
對於單精度數,使用
%f格式符輸出時,僅前
7位是有效數字,小數6位.
對於雙精度數,使用
%lf格式符輸出時,前
16位是有效數字,小數6位.
######################################
拾遺########################################
由高手指點
對於m.n
的格式還可以用如下方法表示(例)
char ch[20];
printf("%*.*s/n",m,n,ch);
前邊的*
定義的是總的寬度,後邊的定義的是輸出的個數。分別對應外面的引數m和
n 。我想這種方法的好處是可以在語句之外對引數m和
n賦值,從而控制輸出格式。今天
(06.6.9)
又看到一種輸出格式
%n 可以將所輸出字串的長度值賦紿乙個變數
, 見下例
:int slen;
printf("hello world%n", &slen);
執行後變數被賦值為11。
c語言輸出格式
stdio.h標頭檔案使我們可以訪問標準i o庫,stdlib.h定義了exit success和exit failure符號,string.h標頭檔案提供的函式操縱字串。常見printf格式 d 以十進位制形式列印乙個整型值 o 以八進位制形式列印乙個整型值 x 以十六進製制形式列印乙個整型值 g...
c語言輸出格式
1 轉換說明符 a a 浮點數 十六進製制數字和p p 記數法 c99 c 字元 d 有符號十進位制整數 f 浮點數 包括float和doulbe e e 浮點數指數輸出 e e 記數法 g g 浮點數不顯無意義的零 0 i 有符號十進位制整數 與 d相同 無符號十進位制整數 o 八進位制整數 eg...
c語言輸出格式總結
c語言輸出格式總結 1 一般格式 printf 格式控制,輸出表列 例如 printf i d,ch c n i,ch 說明 1 格式控制 是用雙撇號括起來的字串,也稱 轉換控制字串 它包括兩種資訊 格式說明 由 和格式字元組成,它的作用是將輸出的資料轉換 為指定的格式輸出。普通字元,即需要原樣輸出...