fgetwc, getwc
来自 zh.cppreference.net
| 定义于头文件 <wchar.h>
|
||
wint_t fgetwc( FILE* stream );
|
(C95 起) | |
wint_t getwc( FILE* stream );
|
(C95 起) | |
从给定的输入流中读取下一个宽字符。 getwc() 可能实现为宏,并且可能对 stream 求值多次。
参数
| stream | - | 从中读取宽字符 |
返回值
流中的下一个宽字符,或 WEOF 在失败时返回。
如果失败由文件结束条件引起,则额外设置 eof 指示符(见 feof()) 于 stream。如果失败由其他错误引起,则设置 error 指示符(见 ferror()) 于 stream。
如果发生编码错误,则额外将 errno 设置为 EILSEQ。
示例
运行此代码
#include <errno.h>
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
#include <wchar.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);
}
可能的输出:
кот
引用
- C23 标准 (ISO/IEC 9899:2024):
- 7.29.3.1 fgetwc 函数 (p: TBD)
- 7.29.3.6 getwc 函数 (p: TBD)
- 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
| |