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
stdio_h.htm
廣告