函数
<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


另见