描述
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 or i 有符號十進製整數 |
3 |
e 使用 e 字符的科學記數法(尾數/ index ) |
4 |
E 使用 E 字符的科學記數法(尾數/ index ) |
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 |
- 在給定的字段寬度內為Left-justify;右對齊是默認設置(請參見寬度sub-specifier)。 |
2 |
+ 即使對於正數,也強製在結果前麵加上加號或減號(+ 或 -)。默認情況下,隻有負數前麵帶有 -ve 符號。 |
3 |
(space) 如果不寫任何符號,則在該值之前插入一個空格。 |
4 |
# 與 o、x 或 X 說明符一起使用,對於非零的值,該值分別以 0、0x 或 0X 開頭。與 e、E 和 f 一起使用,它會強製寫入的輸出包含小數點,即使後麵沒有數字。默認情況下,如果後麵沒有數字,則不寫入小數點。與 g 或 G 一起使用,結果與 e 或 E 相同,但不會刪除尾隨零。 |
5 | 0 Left-pads 用零 (0) 代替空格的數字,其中指定了填充(參見寬度 sub-specifier)。 |
不。 | 寬度和描述 |
---|---|
1 |
(number) 最少要打印的字符數。如果要打印的值小於此數字,則結果將用空格填充。即使結果較大,該值也不會被截斷。 |
2 |
* 寬度不是在格式字符串中指定的,而是作為必須格式化的參數之前的附加整數值參數。 |
不。 | .精度和描述 |
---|---|
1 |
.number 對於整數說明符 (d, i, o, u, x, X) - precision 指定要寫入的最小位數。如果要寫入的值小於此數字,則結果用前導零填充。即使結果更長,該值也不會被截斷。精度為 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
相關用法
- C語言 宏 va_start()用法及代碼示例
- C語言 vfprintf()用法及代碼示例
- C語言 vsprintf()用法及代碼示例
- C語言 宏 va_arg()用法及代碼示例
- C語言 宏 va_end()用法及代碼示例
- C語言 宏 assert()用法及代碼示例
- C語言 setlocale()用法及代碼示例
- C語言 fread()用法及代碼示例
- C語言 sinh()用法及代碼示例
- C語言 宏 offsetof()用法及代碼示例
- C語言 feof()用法及代碼示例
- C語言 scanf()用法及代碼示例
- C語言 imagesize()用法及代碼示例
- C語言 getarcoords()用法及代碼示例
- C語言 isdigit()用法及代碼示例
- C語言 clock()用法及代碼示例
- C語言 strcspn()用法及代碼示例
- C語言 setlinestyle()用法及代碼示例
- C語言 fmod()用法及代碼示例
- C語言 showbits()用法及代碼示例
注:本文由純淨天空篩選整理自 C library function - vprintf()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。