fgetwc, getwc

来自cppreference.com
< c‎ | io
 
 
文件输入/输出
类型与对象
函数
文件访问
直接输入/输出
无格式输入/输出
fgetwcgetwc
(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

若文件尾条件导致了失败,则额外设置 stream 上的文件尾指示器(见 feof()) )。若某其他错误导致了失败,则设置 stream 上的错误指示器(见 ferror() )。

若出现编码错误,则另外设置 errnoEILSEQ

示例

#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)
从文件流获取一个宽字符串
(函数)
将一个宽字符写入文件流
(函数)
将一个宽字符送回文件流
(函数)