Provided by: manpages-ja-dev_0.5.0.0.20131015+dfsg-2_all bug

名前

       fgetpos, fseek, fsetpos, ftell, rewind - ストリームの位置を変更する

書式

       #include <stdio.h>

       int fseek(FILE *stream, long offset, int whence);

       long ftell(FILE *stream);

       void rewind(FILE *stream);

       int fgetpos(FILE *stream, fpos_t *pos);
       int fsetpos(FILE *stream, fpos_t *pos);

説明

       fseek()    関数は  stream  によって指定されたストリームにおいて、ファイル位置表示子  (file
       position indicator) をセットする。新たな位置 (バイト単位)   は  whence  で指定された位置に
       offset  バイトを加えることによって与えられる。 whenceSEEK_SET, SEEK_CUR, SEEK_END のど
       れかになっている場合は、それぞれファイルの先頭、現在の位置表示子、  ファイルの末尾からのオ
       フセットが取られる。 fseek() 関数の呼び出しが成功すると、ストリームの end-of-file 表示子は
       クリアされ、それまでに ungetc(3) 関数で戻したデータはなかったことになる。

       ftell()  関数は stream によって指定されたストリームにおける、ファイル位置表示子 の現時点で
       の値を与える。

       rewind()   関数は stream によって指定されたストリームにおいて、ファイル位置表示子 をファイ
       ルの先頭にセットする。この関数は以下と等価である。

              (void) fseek(stream, 0L, SEEK_SET)

       ただし rewind()  ではストリームに対するエラー表示子 (error indicator) も同時に  クリアされ
       る ( clearerr(3)  を見よ)。

       fgetpos()   関数と  fsetpos()  関数は、それぞれ ftell()  と fseek()  で whenceSEEK_SET
       を指定した場合と同様の機能を、異なるインターフェースで提供する。 fgetpos()  はファイルオフ
       セットの現在の値を  pos が参照するオブジェクトに保存し、 fsetpos()  はファイルオフセットを
       pos に設定する。 UNIX 以外のシステムにおいては、 fpos_t が構造体などの複雑なオブジェクトに
       なっていて、これらのルーチンがテキス  トストリームでファイル位置を変更する方法のうち、移植
       性のある唯一のもの になっている場合もある。

返り値

       rewind()  は返り値を持たない。 fgetpos(),  fseek(),  fsetpos()   は成功すると  0  を返す。
       ftell()  は現在のオフセットを返す。失敗した場合は返り値は -1 となり、 errno にエラーを示す
       値がセットされる。

エラー

       EBADF  指定した stream がシークできない。

       EINVAL fseek()  関数に対して与えた whence 引数が SEEK_SET, SEEK_END,  SEEK_CUR  以外の値で
              あった。

       fgetpos(),  fseek(),  fsetpos(),  ftell()   は、それぞれ  fflush(3),  fstat(2),  lseek(2),
       malloc(3)   などのルーチンを呼び出す際に失敗する可能性がある。この場合は  それぞれ対応した
       errno が設定される。

準拠

       C89, C99.

関連項目

       lseek(2), fseeko(3)

この文書について

       この  man ページは Linux man-pages プロジェクトのリリース 3.54 の一部 である。プロジェクト
       の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。