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);
}