Namespaces
Variants

fgetwc, getwc

ja.cppreference.net より
 
 
ファイル入出力
型とオブジェクト
        
関数
ファイルアクセス
(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)
ファイルストリームからワイド文字列を取得します
(関数)
ファイルストリームにワイド文字を書き込みます
(関数)
ワイド文字をファイルストリームに戻します
(関数)