getwchar ()- 从 stdin 获取宽字符
格式
#include <wchar.h>
wint_t getwchar(void);语言级别
ANSI
线程安全
是
语言环境敏感
此函数的行为可能受当前语言环境的 LC_CTYPE 类别影响。 如果在编译命令上指定了 LOCALETYPE (*LOCALEUCS2) 或 LOCALETYPE (*LOCALEUTF) ,那么它也可能受当前语言环境的 LC_UNI_CTYPE 类别影响。 当在编译命令上指定 LOCALETYPE (*CLD) 时,此功能不可用。 有关更多信息,请参阅 了解 CCSID 和语言环境。
集成文件系统界面
当在编译命令上指定 SYSIFCOPT (*NOIFSIO) 时,此功能不可用。
宽字符函数
有关更多信息,请参阅 宽字符 。
描述
getwchar() 函数从 stdin 读取下一个多字节字符,将其转换为宽字符,并推进 stdin的关联文件位置指示符。 对 getwchar() 函数的调用等同于对 getwc(stdin)的调用。
如果在同一流上的后续读操作之间更改了当前语言环境,那么可能会出现未定义的结果。 将非宽字符函数与 stdin 上的 getwchar() 函数配合使用会导致未定义的行为。
返回值
getwchar() 函数返回 stdin 或 WEOF 中的下一个宽字符。 如果 getwchar() 函数迂到 EOF ,那么它会为流设置 EOF 指示符并返回 WEOF。 如果发生读错误,那么将设置流的错误指示符,并且 getwchar() 函数将返回 WEOF。 如果在将多字节字符转换为宽字符期间发生编码错误,那么 getwchar() 函数会将 errno 设置为 EILSEQ 并返回 WEOF。
使用 ferror() 或 feof() 函数来确定是发生了错误还是 EOF 条件。 仅当尝试读取超过最后一个字节的数据时,才会达到 EOF。 读取数据的最后一个字节 (包括最后一个字节) 不会打开 EOF 指示符。
有关 getwchar()的 errno 值的信息,请参阅 fgetwc ()-从流读取宽字符。
示例
getwchar() 从键盘读取宽字符,然后打印宽字符。#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
int main(void)
{
wint_t wc;
errno = 0;
while (WEOF != (wc = getwchar()))
printf("wc = %lc\n", wc);
if (EILSEQ == errno) {
printf("An invalid wide character was encountered.\n");
exit(1);
}
return 0;
/***************************************************************
Assuming you enter: abcde
The output should be:
wc = a
wc = b
wc = c
wc = d
wc = e
***************************************************************/
}