1樓:匿名使用者
用 法:
int printf(const char *format,[argument]);
format 引數輸出的格式,定義格式為:
%[flags][width][.perc] [f|n|h|l]type
規定資料輸出方式,具體如下:
1.type 含義如下:
d 有符號10進位制整數
i 有符號10進位制整數
o 有符號8進位制整數
u 無符號10進位制整數
x 無符號的16進位制數字,並以小寫abcdef表示
x 無符號的16進位制數字,並以大寫abcdef表示
f/f 浮點數
e/e 用科學表示格式的浮點數
g 使用%f和%e表示中的總的位數表示最短的來表示浮點數 g 同g格式,但表示為指數
c 單個字元
s 字串
% 顯示百分號本身
p 顯示一個指標,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位小數;對字串,表示擷取的字元個數
-輸出的數字或字元在域內向左靠
程式例:
#include
int main()
#include
int main()
printf 命令
用途寫格式化輸出。
語法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、d、i, u 和 s 轉換,選項沒有作用。對於 o 轉換,它增加精度來強制結果的第一數字是 a、0(零)。
對於 x 和 x 轉換,非零結果分別具有 0x 或 0x 字首。對於 e、e、 f、g 和 g 轉換,結果通常包含基數字符,即使基數字符後沒有數字。對於 g 和 g 轉換,結尾零不象通常一樣除去。
0 對於 d、i、o、 u、x、e、 e、f、g 和 g 轉換,前導零(跟在符號或底數的後面)用於填充欄位寬度,將不用空格填充。如果顯示 0(零)和 -(減號)選項,0(零)選項被忽略。對於 d、i、o、u、x 和 x 轉換,如果指定精度,0(零)選項將被忽略。
注:其它轉換,沒有定義其行為。
3. 可選的指定最小值欄位寬度的十進位制數字字串。如果轉換值字元少於欄位寬度,該欄位將從左到右按指定的欄位寬度填充。
如果指定了左邊調整選項,欄位將在右邊填充。如果轉換結果寬於欄位寬度,將擴充套件該欄位以包含轉換後的結果。不會發生截斷。
然而,小的精度可能導致在右邊發生截斷。
4. 可選的精度。精度是一個 .(點)後跟十進位制數字字串。如果沒有給出精度,按 0(零)對待。精度指定:
* d、o、i、 u、x 或 x 轉換的最少數字顯示位數。
* e 和 f 轉換的基數字符後的最少數字顯示位數。
* g 轉換的最大有效數字位數。
* s 轉換中字串的最大列印位元組數目。
5. 指示要應用的轉換型別的一個字元,例如:
% 不進行轉換。列印一個 %(百分號)。
d, i 接受整數值並將它轉換為有符號的十進位制符號表示法。精度指定顯示的最小數字位數。如果值轉換後可以用更少的位數來表示,將使用前導零擴充套件。
預設精度是 1。精度為零的零值轉換的結果是空字串。用零作為前導字元來指定欄位寬度,導致用前導零填充欄位寬度值。
o 接受整數值並將它轉換為有符號的八進位制符號表示法。精度指定顯示的最小數字位數。如果值轉換後可以用更少的位數來表示,將使用前導零擴充套件。
預設精度是 1。精度為零的零值轉換的結果是空字串。用零作為前導字元來指定欄位寬度,導致用前導零填充欄位寬度值。
不用八進位制值表示欄位寬度。
u 接受整數值並將它轉換為無符號的十進位制符號表示法。精度指定顯示的最小數字位數。如果值轉換後可以用更少的位數來表示,將使用前導零擴充套件。
預設精度是 1。精度為零的零值轉換的結果是空字串。用零作為前導字元來指定欄位寬度,導致用前導零填充欄位寬度值。
x, x 接受整數值並將它轉換為十六進位制符號表示法。字母 abcdef 用於 x 轉換,字母 abcdef 用於 x 轉換。精度指定顯示的最小數字位數。
如果值轉換後可以用更少的位數來表示,將使用前導零擴充套件。預設精度是 1。精度為零的零值轉換的結果是空字串。
用零作為前導字元來指定欄位寬度,導致用前導零填充欄位寬度值。
f 接受浮點或者雙精度值並將它轉換為十進位制符號表示法,格式為 [-] ddd.ddd。基數字符(在這裡顯示為十進位制點)後的數字位數等於規定的精度。
lc_numeric 語言環境編目確定在這個格式中使用的基數字符。如果不指定精度,則輸出六個數字。如果精度是 0(零),將不顯示基數字符。
e, e 接受浮點或者雙精度值並將它轉換為指數表示的形式 [-] d.ddedd。在基數字符前有一個數字(在這裡顯示為十進位制點),基數字符後的數字位數等於規定的精度。
lc_numeric 語言環境編目確定在這個格式中使用的基數字符。如果不指定精度,則輸出六個數字。如果精度是 0(零),將不顯示基數字符。
e 轉換字元在指數前生成帶 e 而不是帶 e 的數字。指數通常至少包含兩個數字。然而,如果要列印的指數值大於兩個數字,必要時需要列印附加指數數字。
g、g 接受浮點和雙精度值並轉換為 f 或 e 轉換字元的樣式(或在 g 轉換的情況下是 e),用精度指定有效數字的個數。尾零將從結果中除去。基數字符只有在其後是數字時顯示。
使用的樣式取決於轉換的值。樣式 g 僅在轉換的指數結果小於 -4,或大於或等於精度時使用。
c 接受值將其作為字串並列印字串中的第一個字元。
s 接受值將其作為字串並列印字串中的字元直到字串結束或者達到精度指示的字元個數。如果沒有指定精度,列印全部字元直到出現第一個空字元。
b 接受值將其作為字串,可能包含反斜槓轉義序列。列印來自轉換字串的位元組直到字串結束或者達到精度規範指示的位元組數。如果沒有指定精度,列印全部位元組直到出現第一個空字元。
支援下列反斜槓轉義序列:
* 先前列出的反斜槓轉義序列在 format 引數描述下。這些轉義序列將被轉換到它們表示的單個字元。
* \c(反斜槓 c)序列,它不顯示並使 printf 命令忽略 format 引數中的字串引數包含的剩餘的所有字串,所有剩餘的字串引數和所有附加字元。
退出狀態
該命令返回以下出口值:
0 成功完成。
>0 發生錯誤。
示例1. 輸入下列命令:
printf ("%5d%4d\n",1213,43);
產生下列輸出:
_1213_ _43
三次使用 format 引數列印所有給定字串。0(零)由 printf 命令提供以滿足最後的 %4d 轉換規格。
2. 輸入下列命令
printf ("%c %c\n",78,79);
產生下列輸出:
n_o檔案
/usr/bin/printf 包含 printf 命令。
printf()函式中表示什麼,printf 函式中 r是什麼意思?
轉義字元 意義 ascii碼值 十進位制 a 響鈴 bel 007 b 退格 bs 008 f 換頁 ff 012 n 換行 lf 010 r 回車 cr 013 t 水平製表 ht 009 v 垂直製表 vt 011 反斜槓 092 問號字元 063 單引號字元 039 雙引號字元 034 0 空...
cprimerplus中講解printf函式的一些性質時講
你思考的真的很深入,將來對於程式設計來講,不可限量。為了徹底瞭解printf的機制,建議讀下printf的實現 無論是windows下面的還是linux下面的,懂一個就可以。原理一樣。但全部的 非常複雜,我也沒有時間全部每行都讀一下,只在這裡說下他的原理,你可以讀 時候進一步加深理解,先讀c,有必要...
c語言printf函式可以中途換行嗎
小夏在深圳 可以的。system.out.println ln代表換行,不換行的輸出語句為system.out.print 減號結果左對齊,右邊填空格。預設是右對齊,左邊填空格。加號輸出符號 正號或負號 space空格輸出值為正時加上空格,為負時加上負號 井號type是o x x時,增加字首0 0x...