C語言printf函式詳解

2021-10-04 21:01:09 字數 3044 閱讀 4045

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函式詳解

int printf const char format,函式作用是將格式化資料輸出到標準輸出中。如果format引數包含格式說明符 以 開頭的子串行 則format後面的附加引數將被格式化並插入結果字串中,以替換它們各自的說明符。format 包含要被寫入到標準輸出的c字串。字串中可以選擇性的包含...

C語言格式輸出函式printf 詳解

printf函式稱為格式輸出函式,其關鍵字最末乙個字母f即為 格式 format 之意。其功能是按使用者指定的格式,把指定的資料顯示到顯示器螢幕上。在前面的例題中我們已多次使用過這個函式。printf函式是乙個標準庫函式,它的函式原型在標頭檔案 stdio.h 中。但作為乙個特例,不要求在使用 pr...

C語言printf函式詳解和示例

c語言格式化輸出的函式有printf sprintf和snprintf等,功能略有不同,使用方法大同小異,本文以printf函式為例來介紹它們的用法。int printf const char format,大家看到printf函式的宣告就會有點懵,它引數的寫法與我們之前學到的函式知識不一樣,pri...