vwprintf ()- 将自变量数据格式化为宽字符和打印

格式

#include <stdarg.h>
#include <wchar.h>
int vwprintf(const wchar_t *format, va_list arg);

语言级别

ANSI

线程安全

语言环境敏感

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

集成文件系统界面

当在编译命令上指定 SYSIFCOPT (*NOIFSIO) 时,此功能不可用。

宽字符函数

有关更多信息,请参阅 宽字符

描述

vwprintf() 函数等同于 wprintf() 函数,只是变量自变量列表被替换为 arg, va_start 宏 (以及可能的后续 va_arg 调用) 将初始化该变量列表。 vwprintf() 函数不会调用 va_end 宏。

返回值

vwprintf() 函数返回传输的宽字符数。 如果发生输出错误,那么 vwprintf() 将返回负值。

示例

此示例打印宽字符 a。 打印是通过 vout() 函数完成的,该函数采用可变数量的自变量,并使用 vwprintf() 函数将它们打印到 stdout。
#include <wchar.h>
#include <stdarg.h>
#include <locale.h>

void vout (wchar_t *fmt, ...);

int main(void)     {
 FILE *stream;
 wchar_t format[] = L"%lc";
 setlocale(LC_ALL, "POSIX");
 vout (format, L'a');
 return(0);

/* A long a is written to stdout, if stdout is written to the screen
   it may get converted back to a single byte 'a'.  */
}

void vout (wchar_t *fmt, ...) {
 va_list arg_ptr;
 va_start (arg_ptr, fmt);
 vwprintf (fmt, arg_ptr);
 va_end (arg_ptr);
}

相关信息