rewind() — 現在のファイル位置の調整

フォーマット

#include <stdio.h>
void rewind(FILE *stream);

言語レベル

ANSI

スレッド・セーフ

はい

説明

rewind() 関数は、stream に関連したファイル・ポインターの位置をファイルの先頭に変更します。 rewind() 関数への呼び出しは、以下の場合と同じです。
   (void)fseek(stream, 0L, SEEK_SET);

ただし、rewind() 関数は stream のエラー標識もクリアします。

rewind() 関数は、type=record を指定してオープンしたファイルについてはサポートされません。

戻り値

戻り値はありません。

errno の値は、次のいずれかに設定されます。
意味
EBADF
ファイル・ポインター、または記述子が有効ではありません。
ENODEV
誤ったデバイスに対して、操作が試行されました。
EIOERROR
リカバリー不能な入出力エラーが発生しました。
EIORECERR
リカバリー可能な入出力エラーが発生しました。

この例では、まず入力と出力用のファイル myfile をオープンします。 この例では、ファイルに整数を書き込み、 rewind() を使用してファイル・ポインターの位置をファイルの先頭に変更してから、データを読み取ります。
#include <stdio.h>
 
FILE *stream;
 
int data1, data2, data3, data4;
int main(void)
{
   data1 = 1; data2 = -37;
 
   /* Place data in the file */
   stream = fopen("mylib/myfile", "w+");
   fprintf(stream, "%d %d¥n", data1, data2);
 
   /* Now read the data file */
   rewind(stream);
   fscanf(stream, "%d", &data3);
   fscanf(stream, "%d", &data4);
   printf("The values read back in are: %d and %d¥n",
          data3, data4);
}
 
/********************  Output should be similar to:  **************
 
The values read back in are: 1 and -37
*/