putwc ()- 写宽字符
格式
#include <stdio.h>
#include <wchar.h>
wint_t putwc(wint_t wc, FILE *stream);语言级别
ANSI
线程安全
是
语言环境敏感
此函数的行为可能受当前语言环境的 LC_CTYPE 类别影响。 如果在编译命令上指定了 LOCALETYPE (*LOCALEUCS2) 或 LOCALETYPE (*LOCALEUTF) ,那么此行为也可能受当前语言环境的 LC_UNI_CTYPE 类别影响。 当在编译命令上指定 LOCALETYPE (*CLD) 时,此功能不可用。 有关更多信息,请参阅 了解 CCSID 和语言环境。
集成文件系统界面
当在编译命令上指定 SYSIFCOPT (*NOIFSIO) 时,此功能不可用。
宽字符函数
有关更多信息,请参阅 宽字符 。
描述
putwc() 函数在当前位置将宽字符 wc 写入流。 它还相应地推进流的文件位置指示符。 putwc() 函数等同于 fputwc() 函数,只是某些平台将 putwc() 作为宏实现。 因此,对于可移植性, putwc() 的流自变量不应是具有副作用的表达式。
将非宽字符函数与同一流上的 putwc() 函数配合使用会导致未定义的行为。 在调用 putwc() 函数之后,请先清空缓冲区或重新定位流指针,然后再调用流的写函数,除非已达到 EOF。 对流执行写操作后,请先清空缓冲区或重新定位流指针,然后再调用 putwc() 函数。
返回值
putwc() 函数返回写入的宽字符。 如果发生写错误,那么它会设置流的错误指示符并返回 WEOF。 如果将宽字符转换为多字节字符时发生编码错误,那么 putwc() 函数会将 errno 设置为 EILSEQ 并返回 WEOF。
有关 putwc()的 errno 值的信息,请参阅 fputc ()-写入字符。
示例
以下示例使用
putwc() 函数将 wcs 中的宽字符转换为多字节字符,并将其写入文件 putwc.out。#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <errno.h>
int main(void)
{
FILE *stream;
wchar_t *wcs = L"A character string.";
int i;
if (NULL == (stream = fopen("putwc.out", "w"))) {
printf("Unable to open: \"putwc.out\".\n");
exit(1);
}
for (i = 0; wcs[i] != L'\0'; i++) {
errno = 0;
if (WEOF == putwc(wcs[i], stream)) {
printf("Unable to putwc() the wide character.\n"
"wcs[%d] = 0x%lx\n", i, wcs[i]);
if (EILSEQ == errno)
printf("An invalid wide character was encountered.\n");
exit(1);
}
}
fclose(stream);
return 0;
/***************************************************************
The output file putwc.out should contain :
A character string.
***************************************************************/
}