命名空间
变体
操作

fgetwc, getwc

来自 cppreference.com
< c‎ | io
 
 
文件输入/输出
类型和对象
函数
文件访问
直接输入/输出
无格式输入/输出
fgetwcgetwc
(C95)(C95)
(C95)
(C95)(C95)
(C95)
(C95)
格式化输入
(C99)(C99)(C99)(C11)(C11)(C11)     
 
在头文件 <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)
从文件流中获取宽字符串
(函数) [编辑]
将宽字符写入文件流
(函数) [编辑]
将宽字符放回文件流
(函数) [编辑]
C++ 文档 for fgetwc