c語言格式化輸出的函式有printf、sprintf和snprintf等,功能略有不同,使用方法大同小異,本文以printf函式為例來介紹它們的用法。
int
printf
(const
char
*format,...);
大家看到printf函式的宣告就會有點懵,它引數的寫法與我們之前學到的函式知識不一樣,printf函式是乙個「可變引數函式」(即函式引數的個數是可變的),可變引數函式的知識以後再介紹,現在只要知道怎麼使用就行了。
printf函式的引數的個數和型別都是可變的,每乙個引數的輸出格式都有對應的格式說明符與之對應,從格式串的左端第1 個格式說明符對應第 1 個輸出引數,第 2 個格式說明符對應第 2 個輸出引數,第 3個格式說明符對應第 3 個輸出引數,以此類推。
其中,格式說明符的形式如下(方括號 中的項為可選項):
%
[flags]
[width]
[.prec] type
它用以表示輸出資料的型別,以下是常用型別的彙總,不常用的就不介紹了。
%hd、%d、%ld 以十進位制、有符號的形式輸出 short、int、long 型別的整數。
%hu、%u、%lu 以十進位制、無符號的形式輸出 short、int、long 型別的整數
%c 輸出字元。
%lf 以普通方式輸出double(float棄用,long doube無用)。
%e 以科學計數法輸出double。
%s 輸出字串。
它用於控制輸出內容的寬度。
printf
("=%12s=\n"
,"abc");
// 輸出= abc=
printf
("=%12d=\n"
,123);
// 輸出= 123=
printf
("=%12lf=\n"
,123.5);
// 輸出= 123.500000=
flags它用於控制輸出內容的對齊方式。
-:輸出的內容左對齊。
printf
("=%-12s=\n"
,"abc");
// 輸出=abc =
printf
("=%-12d=\n"
,123);
// 輸出=123 =
printf
("=%-12f=\n"
,123.5);
// 輸出=123.500000 =
如果輸出的內容是整數或浮點數,並且對齊的方式是右對齊,可以加0填充,例如:
printf
("=%012s=\n"
,"abc");
// 輸出= abc=
printf
("=%012d=\n"
,123);
// 輸出=000000000123=
printf
("=%012f=\n"
,123.5);
// 輸出=00123.500000=
從上面第一行**的結果看出,輸出的內容不是整數或浮點數,是字串,不能在前面填0。
左對齊的時候,能在整數或浮點數的後面補0嗎?浮點數最多可以補到6位,整數不行,為什麼?您的存款能在後面補0嗎?
如果輸出的內容是浮點數,它用於控制輸出內容的精度,也就是說小數點後面保留多少位,後面的數四捨五入。
printf
("=%12.2lf=\n"
,123.5);
// 輸出= 123.50=
printf
("=%.2lf=\n"
,123.5);
// 輸出=123.50=
printf
("=%12.2e=\n"
,123500000000.0);
// 輸出= 1.24e+11=
printf
("=%.2e=\n"
,123500000000.0);
// 輸出=1.24e+11=
int
printf
(const
char
*format,..
.);int
sprintf
(char
*str,
const
char
*format,..
.);int
snprintf
(char
*str, size_t size,
const
char
*format,...);
printf是把結果輸出到螢幕,sprintf把格式化輸出的內容儲存到字串str中,snprintf的n類似於strncpy中的n,意思是只獲取輸出結果的前n-1個字元,不是n個字元。
c語言提供了把字串轉換為整數和浮點資料的庫函式,但是沒有把整數和浮點資料轉換為字串的庫函式,而是採用sprintf和snprintf函式格式化輸出到字串。
示例(book98.c)
/*
* 程式名:book98.c,此程式演示格式化輸出sprintf和snprintf函式。
*/#include
#include
intmain()
執行結果
程式執行第二行只輸出了6個字元,注意,snprintf函式在unix和windows平台下的表現略有不同,在windows平台下,第二行會輸出7個字元。
C語言printf函式詳解
c語言格式化輸出的函式有printf sprintf和snprintf等,功能略有不同,使用方法大同小異,本文以printf函式為例來介紹它們的用法。int printf const char format,大家看到printf函式的宣告就會有點懵,它引數的寫法與我們之前學到的函式知識不一樣,pri...
c語言printf函式詳解
int printf const char format,函式作用是將格式化資料輸出到標準輸出中。如果format引數包含格式說明符 以 開頭的子串行 則format後面的附加引數將被格式化並插入結果字串中,以替換它們各自的說明符。format 包含要被寫入到標準輸出的c字串。字串中可以選擇性的包含...
C語言格式輸出函式printf 詳解
printf函式稱為格式輸出函式,其關鍵字最末乙個字母f即為 格式 format 之意。其功能是按使用者指定的格式,把指定的資料顯示到顯示器螢幕上。在前面的例題中我們已多次使用過這個函式。printf函式是乙個標準庫函式,它的函式原型在標頭檔案 stdio.h 中。但作為乙個特例,不要求在使用 pr...