fgetwc, getwc
来自 cppreference.cn
在头文件 <wchar.h> 中定义 |
||
wint_t fgetwc( FILE *stream ); |
(自 C95 起) | |
wint_t getwc( FILE *stream ); |
(自 C95 起) | |
从给定的输入流中读取下一个宽字符。getwc() 可以作为宏实现,并且可能会多次评估 stream
。
目录 |
[编辑] 参数
stream | - | 从中读取宽字符的流 |
[编辑] 返回值
流中的下一个宽字符,或失败时为 WEOF。
如果失败是由文件结束条件引起的,则额外设置 stream
上的 *eof* 指示器(参阅 feof())。如果失败是由其他错误引起的,则设置 stream
上的 *error* 指示器(参阅 ferror())。
如果发生编码错误,则额外设置 errno 为 EILSEQ
。
[编辑] 示例
运行此代码
#include <stdio.h> #include <stdlib.h> #include <wchar.h> #include <errno.h> #include <locale.h> int main(void) { setlocale(LC_ALL, "en_US.utf8"); FILE *fp = fopen("fgetwc.dat", "w"); if(!fp) { perror("Can't open file for writing"); return EXIT_FAILURE; } fputs("кошка\n", fp); fclose(fp); fp = fopen("fgetwc.dat", "r"); if(!fp) { perror("Can't open file for reading"); return EXIT_FAILURE; } wint_t wc; errno = 0; while ((wc = fgetwc(fp)) != WEOF) putwchar(wc); if (ferror(fp)) { if (errno == EILSEQ) puts("Character encoding error while reading."); else puts("I/O error when reading"); } else if (feof(fp)) puts("End of file reached successfully"); fclose(fp); }
输出
кошка
[编辑] 参考资料
- C17 标准 (ISO/IEC 9899:2018)
- 7.29.3.1 fgetwc 函数 (p: 307-308)
- 7.29.3.6 getwc 函数 (p: 309)
- C11 标准 (ISO/IEC 9899:2011)
- 7.29.3.1 fgetwc 函数 (p: 421-422)
- 7.29.3.6 getwc 函数 (p: 424)
- C99 标准 (ISO/IEC 9899:1999)
- 7.24.3.1 fgetwc 函数 (p: 367)
- 7.24.3.6 getwc 函数 (p: 369)
[编辑] 另请参阅
从文件流中获取一个字符 (函数) | |
(C95) |
从文件流中获取一个宽字符串 (函数) |
(C95) |
向文件流写入一个宽字符 (函数) |
(C95) |
将一个宽字符放回文件流中 (函数) |
C++ 文档 用于 fgetwc
|