C言語編 標準ライブラリのリファレンス ungetwc

先頭へ戻る

ungetwc関数

概要 ワイド文字を入力ストリームへ押し戻す。
ヘッダ wchar.h
形式 wint_t ungetwc(wint_t c, FILE* stream);
引数 c 押し戻す文字。WEOF に等しい場合は何も起こらず、失敗とみなされる。
stream 入力ストリーム。
戻り値 成功したら押し戻した文字 c がそのまま返される。失敗した場合には、WEOF が返される。
詳細 押し戻された文字は、次回の getwc関数などの呼び出し時に取り出される。複数押し戻していた場合は、逆順で取り出される。何文字まで押し戻すことが可能かは環境によるが、最低でも 1文字の押し戻しが可能であることは保証されている。
fseek関数rewind関数fsetpos関数によってファイルポジションが変更された場合、押し戻されていた文字はクリアされる。
この関数が成功した場合、対象のストリームのファイル終了指示子がクリアされる。つまり、feof関数が偽を返すような状態に戻される。
注意
使用例
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <wchar.h>

int main(void)
{
    FILE* fp;
    wint_t c;

    setlocale( LC_CTYPE, "" );

    fp = fopen( "test.txt", "r" );
    if( fp == NULL ){
        fputs( "ファイルオープンに失敗しました。\n", stderr );
        exit( EXIT_FAILURE );
    }

    /* 1文字目を読み込む */
    c = fgetwc(fp);
    printf( "%lc\n", c );

    /* 2文字目を読み込む */
    c = fgetwc(fp);
    printf( "%lc\n", c );

    /* 2文字目を押し戻す */
    ungetwc( c, fp );

    /* 押し戻した文字が読み込まれる */
    c = fgetwc(fp);
    printf( "%lc\n", c );

    if( fclose( fp ) == EOF ){
        fputs( "ファイルクローズに失敗しました。\n", stderr );
        exit( EXIT_FAILURE );
    }

    return 0;
}

入力ファイル (test.txt) :

あいうえお

実行結果:

あ
い
い
関連 マルチバイト文字版の ungetc関数が使える。
解説章


参考リンク



更新履歴

'2018/4/18 「注意」の内容を「詳細」へ移動して、文章を修正。

'2018/1/22 新規作成。



標準ライブラリのリファレンス(名前順)のトップページへ

標準ライブラリのリファレンス(ヘッダ別)のトップページへ

C言語編のトップページへ

Programming Place Plus のトップページへ


はてなブックマーク Pocket に保存 Twitter でツイート Twitter をフォロー
Facebook でシェア Google+ で共有 LINE で送る rss1.0 取得ボタン RSS
管理者情報 プライバシーポリシー