vsnprintf ()- 将自变量数据打印到缓冲区

格式

#include <stdarg.h>
#include <stdio.h>
int vsnprintf(char *target-string, size_t n, const char *format, va_list arg_ptr);

语言级别

ANSI

线程安全

语言环境敏感

此函数的行为可能受当前语言环境的 LC_CTYPE 和 LC_NUMERIC 类别影响。 如果在编译命令中指定了 LOCALETYPE (*LOCALEUCS2) 或 LOCALETYPE (*LOCALEUTF) ,那么此行为也可能受当前语言环境的 LC_UNI_CTYPE 类别影响。 有关更多信息,请参阅 了解 CCSID 和语言环境

描述

vsnprintf() 函数将一系列字符和值格式化并存储在缓冲区目标字符串中。 vsnprintf() 函数的工作方式与 snprintf() 函数一样,只是 arg_ptr 指向一个自变量列表,这些自变量的数目可以因程序中的调用而异。 这些自变量应由 va_start 函数针对每个调用进行初始化。 相反, snprintf() 函数可以具有自变量列表,但是在编译程序时,该列表中的自变量数目是固定的。

vsnprintf() 函数根据 format中相应的格式说明符来转换自变量列表中的每个条目。 format 具有与 printf() 函数的格式字符串相同的格式和函数。

返回值

vsnprintf() 函数返回数组中写入的字节数,不计入结束空字符。

示例

此示例将可变数量的字符串分配给 string ,并打印生成的字符串。
#include <stdarg.h>
#include <stdio.h>

void vout(char *string, char *fmt, ...);
char fmt1 [] = "%s  %s  %s\n";

int main(void)
{
   char string[100];

   vout(string, fmt1, "Sat", "Sun", "Mon");
   printf("The string is:  %s\n", string);
}

void vout(char *string, char *fmt, ...)
{
   va_list arg_ptr;

   va_start(arg_ptr, fmt);
   vsnprintf(string, 8, fmt, arg_ptr);
   va_end(arg_ptr);
}

/******************  Output should be similar to: ****************

The string is:  Sat  Su
*/

相关信息