fgetwc, getwc
来自cppreference.com
在标头 <wchar.h> 定义
|
||
wint_t fgetwc( FILE *stream ); |
(C95 起) | |
wint_t getwc( FILE *stream ); |
(C95 起) | |
从给定的输入流读取下个宽字符。 getwc() 可以实现为宏,且可能对 stream
求值超过一次。
参数
stream | - | 要读取宽字符的流 |
返回值
来自流的下个宽字符,或若失败则为 WEOF 。
若文件尾条件导致了失败,则额外设置 stream
上的文件尾指示器(见 feof()) )。若某其他错误导致了失败,则设置 stream
上的错误指示器(见 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 The fgetwc function (第 307-308 页)
- 7.29.3.6 The getwc function (第 309 页)
- C11 标准(ISO/IEC 9899:2011):
- 7.29.3.1 The fgetwc function (第 421-422 页)
- 7.29.3.6 The getwc function (第 424 页)
- C99 标准(ISO/IEC 9899:1999):
- 7.24.3.1 The fgetwc function (第 367 页)
- 7.24.3.6 The getwc function (第 369 页)
参阅
从文件流获取一个字符 (函数) | |
(C95) |
从文件流获取一个宽字符串 (函数) |
(C95) |
将一个宽字符写入文件流 (函数) |
(C95) |
将一个宽字符送回文件流 (函数) |