函式
<cstdio>

vsprintf

int vsprintf (char * s, const char * format, va_list arg );
將可變引數列表中的格式化資料寫入字串
組合一個字串,其文字與在 printf 上使用 format 時列印的文字相同,但使用由 arg 標識的可變引數列表中的元素,而不是額外的函式引數,並將結果內容作為 C 字串儲存在由 s 指向的緩衝區中。

在內部,該函式從由 arg 標識的列表中檢索引數,就像對其使用了 va_arg 一樣,因此 arg 的狀態很可能會因呼叫而改變。

無論如何,arg 應該在呼叫之前的某個時刻由 va_start 初始化,並且預計在呼叫之後的某個時刻由 va_end 釋放。

引數

s
指向儲存結果 C 字串的緩衝區的指標。
緩衝區應該足夠大以包含結果字串。
format
一個 C 字串,包含一個格式化字串,其遵循與 printf 中的 format 相同的規範(詳見 printf)。
arg
一個標識由 va_start 初始化的可變引數列表的值。
va_list 是在 <cstdarg> 中定義的特殊型別。

返回值

成功時,返回寫入的字元總數。
失敗時,返回一個負數。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/* vsprintf example */
#include <stdio.h>
#include <stdarg.h>

void PrintFError ( const char * format, ... )
{
  char buffer[256];
  va_list args;
  va_start (args, format);
  vsprintf (buffer,format, args);
  perror (buffer);
  va_end (args);
}

int main ()
{
  FILE * pFile;
  char szFileName[]="myfile.txt";

  pFile = fopen (szFileName,"r");
  if (pFile == NULL)
    PrintFError ("Error opening '%s'",szFileName);
  else
  {
    // file successfully open
    fclose (pFile);
  }
  return 0;
}

在此示例中,如果檔案myfile.txt不存在,則呼叫 perror 來顯示類似於以下的錯誤訊息

Error opening file 'myfile.txt': No such file or directory


另見