トップ 言語 C・C++ C言語 標準ライブラリ ファイル読み込みでインデックスを先頭に戻す(rewind関数)

ファイル読み込みでインデックスを先頭に戻す(rewind関数)―C言語の標準ライブラリ

C言語の標準ライブラリのrewind関数を使用して、「ファイル読み込みでインデックスを先頭に戻す」方法をまとめています。

▲記事トップへ

C言語のファイル読み込みでインデックスを先頭に戻す

rewind関数で、読み込みが終わったファイル読み込みのインデックスの位置を先頭に戻すことができます。

rewind関数

rewind関数は、C言語の標準ライブラリ(stdio.h)にあります。rewind関数のプロトタイプ宣言は以下です。

void rewind(FILE *stream);

ファイル読み込みの位置を保管するファイルポインターをrewind関数の引数のFILE *streamに設定して、rewind関数を呼び出します。

例えば、以下のように呼び出します。

FILE *fp; // ファイル読み込みの位置を保管するファイルポインター
:
rewind(fp); // rewind関数の呼び出し

rewind関数を呼び出すと、ファイル読み込みの位置を保管するファイルポインターに保存されていたインデックスの位置を先頭に戻すことができます。

サンプルコード(sample.c)

サンプルコードです。stdlib.hは、ファイル読み込みできない場合の処理でexit関数を使用するためインクルードしています。

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

int main(void) {
    FILE *fp;
    char ch;

    // ファイル読み込み&ファイルが読み込めない場合は終了
    fp = fopen("sample.txt", "r");
    if (fp == NULL) {
        printf("sample.txtを用意してください。");
        exit(1);
    }

    // fpが先頭なので読み取れる
    printf("1)pが先頭なので読み取れる\n");
    while ((ch = fgetc(fp)) != EOF) {
        putchar(ch);
    }
    putchar('\n');

    // fpが終わりを挿しているため読み取れない
    printf("2)fpが終わりを挿しているため読み取れない\n");
    while ((ch = fgetc(fp)) != EOF) {
        putchar(ch);
    }
    putchar('\n');

    // fpが先頭なので読み取れる
    rewind(fp);
    printf("3)pが先頭なので読み取れる\n");
    while ((ch = fgetc(fp)) != EOF) {
        putchar(ch);
    }
    putchar('\n');

    fclose(fp);
    return 0;
}

サンプルソースのコンパイルと実行

Windows環境の例

Windows上にインストールしたbcc32(Borland C++コンパイラー)を使用して動作確認する例です。

コンパイル

bcc32コマンドの引数にソースファイルを指定して、実行します。

> bcc32 sample.c

準備

ファイル読み込みのサンプルですので、ファイル読み込み用のファイルsample.txtが必要です。

ここでは、sample.txtに「Hello World!!」という文字を記述して保存します。

Hello World!!

ファイル読み込み用のファイルsample.txtなどがあるか確認。

> dir /B
sample.c
sample.exe
sample.obj
sample.tds
sample.txt

実行

> sample
1)pが先頭なので読み取れる
Hello World!!

2)fpが終わりを挿しているため読み取れない

3)pが先頭なので読み取れる
Hello World!!

Linux環境の例

Linux上にインストールしたgccを使用して動作確認する例を示します。

コンパイル

$ gcc -o sample sample.c
$ ls
sample  sample.c

準備

ファイル読み込み用のファイルsample.txtが必要です。 sample.txtに「Hello World!!」という文字を記述して保存します。

Hello World!!

ファイル読み込み用のファイルsample.txtなどがあるか確認。

$ ls
sample  sample.c  sample.txt
$ cat sample.txt
Hello World!!

実行

$ ./sample
1)pが先頭なので読み取れる
Hello World!!

2)fpが終わりを挿しているため読み取れない

3)pが先頭なので読み取れる
Hello World!!

もっとプログラミング知識を広げるための参考

戻る

スポンサーリンク

サイト内のページ

言語
C・C++ /HTML /Java /JavaScript /PHP /シェルスクリプト

開発環境
Ant /Burp /Eclipse /Fiddler /gcc /gdb /Git /g++ /JDK /JMeter /JUnit /Teraterm /ZAP

技術・仕様
Ajax /CORBA /Jakarta EE(旧称J2EE、Java EE) /JNI

ライブラリ/Framework/CMS
bootstrap /jQuery /FuelPHP /Lucene /MyBatis /Seasar2 /Spring /Struts /WordPress

Web API
Google Maps

ITインフラOSとミドルウェア
Linux /Windows /シェル
ActiveMQ /Tomcat /MariaDB /MySQL /Nagios /Redis /Solr

ITインフラサーバー
公開Webサーバー

ITインフラネットワーク
プログラミング /構築

ITインフラセキュリティ
公開サーバーのセキュリティ

PC製品
ZOTAC

SI
ホームページの作り方

その他
IT用語 /ITスキル体系

スポンサーリンク

関連サイト内検索ツール

zealseedsおよび関連サイト内のページが検索できます。

IPアドレス確認ツール

あなたのグローバルIPアドレスは以下です。

3.133.123.30

HTMLの表示色確認ツール

パスワード生成ツール

文字数のプルダウンを選択して、取得ボタンを押すと「a~z、A~Z、0~9」の文字を ランダムに組み合わせた文字列が表示されます。

ここに生成されます。

スポンサーリンク