Namespaces
Variants

fgetwc, getwc

From cppreference.net
< c ‎ | io
ヘッダーで定義 <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 <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)
ファイルストリームからワイド文字列を取得する
(関数)
ファイルストリームにワイド文字を書き込む
(関数)
(C95)
ワイド文字をファイルストリームに戻す
(関数)