fgetwc, getwc
来自cppreference.com
| 在标头 <wchar.h> 定义
|
||
| |
(C95 起) | |
| |
(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) |
将一个宽字符送回文件流 (函数) |
fgetwc 的 C++ 文档
| |