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

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

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


rewind関数

概要

ファイルポジションを先頭まで巻き戻す。

ヘッダ

stdio.h

形式

void rewind(FILE* stream);

引数

stream

対象のストリーム。

戻り値

なし

詳細

ファイルポジションを、ファイルの先頭まで戻す。

対象のストリームに対する、ファイル終了指示子およびエラー指示子をクリアする。すなわち、feof関数ferror関数の結果が偽になるような状態にする。

この関数はちょうど、「clearerr(stream); fseek(stream, 0L, SEEK_SET);」のように 2つの関数の呼び出しを組み合わせたときの動作と一致する。

注意

この関数はエラーの有無を確認できないという欠点がある。fseek関数を用いて、

if (fseek(fp, 0L, SEEK_SET) != 0) {
    // エラー発生時の処理
}
のようにした方が良い。

使用例

#include <stdio.h>
#include <stdlib.h>

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

    char buf[80];
    if (fgets(buf, sizeof(buf), fp) == NULL) {
        fputs("ファイルへの書き込みに失敗しました。\n", stderr);
        exit(EXIT_FAILURE);
    }
    printf("%s", buf);

    rewind(fp);  // エラーを確認していない(できない)問題がある

    if (fgets(buf, sizeof(buf), fp) == NULL) {
        fputs("ファイルへの書き込みに失敗しました。\n", stderr);
        exit(EXIT_FAILURE);
    }
    printf("%s", buf);

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

入力ファイル (test.txt)

1行目
2行目
3行目

実行結果:

1行目
1行目

関連

ファイルポジションの移動は、fseek関数fsetpos関数でも行える。

解説章

第40章


参考リンク


更新履歴

’2018/4/14 全体的に文章を見直し修正。

’2018/1/22 新規作成。



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

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

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

Programming Place Plus のトップページへ



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