C 庫函數 - vprintf()

C 標準庫 - <stdio.h> C 標準庫 - <stdio.h>

描述

C 庫函數 int vprintf(const char *format, va_list arg) 使用參數列表發送格式化輸出到標準輸出 stdout。

聲明

下麵是 vprintf() 函數的聲明。

int vprintf(const char *format, va_list arg)

參數

  • format -- 這是字串,包含了要被寫入到標準輸出 stdout 的文本。它可以包含嵌入的 format 標籤,format 標籤可被隨後的附加參數中指定的值替換,並按需求進行格式化。format 標籤屬性是 %[flags][width][.precision][length]specifier,具體講解如下:
specifier(說明符)輸出
c字元
d 或 i有符號十進位整數
e使用 e 字元的科學科學記數法(尾數和指數)
E使用 E 字元的科學科學記數法(尾數和指數)
f十進位浮點數
g自動選擇 %e 或 %f 中合適的表示法
G自動選擇 %E 或 %f 中合適的表示法
o有符號八進制
s字元的字串
u無符號十進位整數
x無符號十六進制整數
X無符號十六進制整數(大寫字母)
p指針地址
n無輸出
%字元

flags(標識)描述
-在給定的字段寬度內左對齊,默認是右對齊(參見 width 子說明符)。
+強制在結果之前顯示加號或減號(+ 或 -),即正數前面會顯示 + 號。默認情況下,只有負數前面會顯示一個 - 號。
(space)如果沒有寫入任何符號,則在該值前面插入一個空格。
#與 o、x 或 X 說明符一起使用時,非零值前面會分別顯示 0、0x 或 0X。
與 e、E 和 f 一起使用時,會強制輸出包含一個小數點,即使後邊沒有數字時也會顯示小數點。默認情況下,如果後邊沒有數字時候,不會顯示顯示小數點。
與 g 或 G 一起使用時,結果與使用 e 或 E 時相同,但是尾部的零不會被移除。
0在指定填充 padding 的數字左邊放置零(0),而不是空格(參見 width 子說明符)。

width(寬度)描述
(number)要輸出的字元的最小數目。如果輸出的值短於該數,結果會用空格填充。如果輸出的值長於該數,結果不會被截斷。
*寬度在 format 字串中未指定,但是會作為附加整數值參數放置於要被格式化的參數之前。

.precision(精度)描述
.number對於整數說明符(d、i、o、u、x、X):precision 指定了要寫入的數字的最小位數。如果寫入的值短於該數,結果會用前導零來填充。如果寫入的值長於該數,結果不會被截斷。精度為 0 意味著不寫入任何字元。
對於 e、E 和 f 說明符:要在小數點後輸出的小數位數。
對於 g 和 G 說明符:要輸出的最大有效位數。
對於 s: 要輸出的最大字符數。默認情況下,所有字元都會被輸出,直到遇到末尾的空字元。
對於 c 類型:沒有任何影響。
當未指定任何精度時,默認為 1。如果指定時不帶有一個顯式值,則假定為 0。
.*精度在 format 字串中未指定,但是會作為附加整數值參數放置於要被格式化的參數之前。

length(長度)描述
h參數被解釋為短整型或無符號短整型(僅適用於整數說明符:i、d、o、u、x 和 X)。
l參數被解釋為長整型或無符號長整型,適用於整數說明符(i、d、o、u、x 和 X)及說明符 c(表示一個寬字元)和 s(表示寬字元字串)。
L參數被解釋為長雙精度型(僅適用於浮點數說明符: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 標準庫 - <stdio.h> C 標準庫 - <stdio.h>