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

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

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


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)
{
    setlocale(LC_CTYPE, "");

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

    // 1文字目を読み込む
    wint_t 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);
    }
}

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

あいうえお

実行結果:

あ
い
い

関連

マルチバイト文字版の ungetc関数が使える。

解説章


参考リンク


更新履歴

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

’2018/1/22 新規作成。



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

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

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

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る