
- C 標準庫
- C 庫 - 首頁
- C 庫 - <assert.h>
- C 庫 - <complex.h>
- C 庫 - <ctype.h>
- C 庫 - <errno.h>
- C 庫 - <fenv.h>
- C 庫 - <float.h>
- C 庫 - <inttypes.h>
- C 庫 - <iso646.h>
- C 庫 - <limits.h>
- C 庫 - <locale.h>
- C 庫 - <math.h>
- C 庫 - <setjmp.h>
- C 庫 - <signal.h>
- C 庫 - <stdalign.h>
- C 庫 - <stdarg.h>
- C 庫 - <stdbool.h>
- C 庫 - <stddef.h>
- C 庫 - <stdio.h>
- C 庫 - <stdlib.h>
- C 庫 - <string.h>
- C 庫 - <tgmath.h>
- C 庫 - <time.h>
- C 庫 - <wctype.h>
- C 標準庫資源
- C 庫 - 快速指南
- C 庫 - 有用資源
- C 庫 - 討論
- C 程式設計資源
- C 程式設計 - 教程
- C - 有用資源
C 庫函式 - vprintf()
描述
C 庫函式int vprintf(const char *format, va_list arg) 使用傳遞給它的引數列表將格式化輸出傳送到 stdout。
宣告
以下是 vprintf() 函式的宣告。
int vprintf(const char *format, va_list arg)
引數
format − 這是包含要寫入緩衝區的文字的字串。它可以選擇包含嵌入的格式標記,這些標記將被後續附加引數中指定的值替換,並根據請求進行格式化。格式標記原型為 − %[flags][width][.precision][length]specifier,如下所述 −
序號 | 說明符 & 輸出 |
---|---|
1 |
c 字元 |
2 |
d 或 i 帶符號十進位制整數 |
3 |
e 使用 e 字元的科學記數法(尾數/指數) |
4 |
E 使用 E 字元的科學記數法(尾數/指數) |
5 |
f 十進位制浮點數 |
6 |
g 使用 %e 或 %f 中較短者 |
7 |
G 使用 %E 或 %f 中較短者 |
8 |
o 帶符號八進位制 |
9 |
s 字元字串 |
10 |
u 無符號十進位制整數 |
11 |
x 無符號十六進位制整數 |
12 |
X 無符號十六進位制整數(大寫字母) |
13 |
p 指標地址 |
14 |
n 不列印任何內容 |
15 |
% 字元 |
序號 | 標誌 & 描述 |
---|---|
1 |
- 在給定的欄位寬度內左對齊;右對齊為預設值(參見寬度子說明符)。 |
2 |
+ 強制在結果前面加上加號或減號(+ 或 -),即使對於正數也是如此。預設情況下,只有負數前面帶有 -ve 符號。 |
3 |
(空格) 如果不打算寫入任何符號,則在值之前插入一個空格。 |
4 |
# 與 o、x 或 X 說明符一起使用時,對於不同於零的值,分別以 0、0x 或 0X 為字首。與 e、E 和 f 一起使用時,它強制寫入的輸出包含一個小數點,即使沒有數字跟隨也是如此。預設情況下,如果後面沒有數字,則不寫入小數點。與 g 或 G 一起使用時,結果與 e 或 E 相同,但不會刪除尾隨零。 |
5 | 0 用零 (0) 而不是空格填充數字的左側,其中指定了填充(參見寬度子說明符)。 |
序號 | 寬度 & 描述 |
---|---|
1 |
(數字) 要列印的最小字元數。如果要列印的值短於此數字,則結果將用空格填充。即使結果更大,也不會截斷值。 |
2 |
* 寬度未在格式字串中指定,而是作為在要格式化的引數之前的附加整數值引數。 |
序號 | .精度 & 描述 |
---|---|
1 |
.數字 對於整數說明符 (d、i、o、u、x、X) - 精度指定要寫入的最小位數。如果要寫入的值短於此數字,則結果將用前導零填充。即使結果更長,也不會截斷值。精度為 0 表示對於值 0 不寫入任何字元。對於 e、E 和 f 說明符 - 這是要在小數點後列印的位數。對於 g 和 G 說明符 - 這是要列印的最大有效位數。對於 s - 這是要列印的最大字元數。預設情況下,列印所有字元,直到遇到結束空字元。對於 c 型別 - 它沒有效果。當未指定精度時,預設為 1。如果指定了句點但沒有為精度指定顯式值,則假定為 0。 |
2 |
.* 精度未在格式字串中指定,而是作為在要格式化的引數之前的附加整數值引數。 |
序號 | 長度 & 描述 |
---|---|
1 |
h 引數被解釋為 short int 或 unsigned short int(僅適用於整數說明符 - i、d、o、u、x 和 X)。 |
2 |
l 對於整數說明符 (i、d、o、u、x 和 X),引數被解釋為 long int 或 unsigned long int,對於說明符 c 和 s,引數被解釋為寬字元或寬字元字串。 |
3 |
L 引數被解釋為 long double(僅適用於浮點數說明符 - e、E、f、g 和 G)。 |
arg − 表示可變引數列表的物件。這應該由 <stdarg> 中定義的 va_start 宏初始化。
返回值
如果成功,則返回寫入的字元總數,否則返回負數。
示例
以下示例顯示了 vprintf() 函式的使用方法。
#include <stdio.h> #include <stdarg.h> void WriteFrmtd(char *format, ...) { va_list args; va_start(args, format); vprintf(format, args); va_end(args); } int main () { WriteFrmtd("%d variable argument\n", 1); WriteFrmtd("%d variable %s\n", 2, "arguments"); return(0); }
讓我們編譯並執行上述程式,它將產生以下結果 −
1 variable argument 2 variable arguments