Namespaces
Variants

fgetwc, getwc

来自 zh.cppreference.net
< c | io
 
 
文件输入/输出
类型和对象
        
函数
文件访问
(C95)
无格式输入/输出
(C95)(C95)
(C95)
(C95)(C95)
(C95)
(C95)

格式化输入
 
定义于头文件 <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)
从文件流获取一个宽字符串
(函数)
将宽字符写入文件流
(函数)
将宽字符放回文件流
(函数)
C++ 文档 面向 fgetwc