#include <stdio.h> int fseek(FILE *stream, long offset, int whence); long ftell(FILE *stream); void rewind(FILE *stream); int fgetpos(FILE *restrict stream, fpos_t *restrict pos); int fsetpos(FILE *stream, const fpos_t *pos);
ftell() 関数は stream によって指定されたストリームにおける、ファイル位置表示子 の現時点での値を与える。
rewind() 関数は stream によって指定されたストリームにおいて、ファイル位置表示子 をファイルの先頭にセットする。この関数は以下と等価である。
ただし rewind() ではストリームに対するエラー表示子 (error indicator) も同時に クリアされる ( clearerr(3) を見よ)。
fgetpos() 関数と fsetpos() 関数は、それぞれ ftell() と fseek() で whence に SEEK_SET を指定した場合と同様の機能を、異なるインターフェースで提供する。 fgetpos() はファイルオフセットの現在の値を pos が参照するオブジェクトに保存し、 fsetpos() はファイルオフセットを pos に設定する。 UNIX 以外のシステムにおいては、 fpos_t が構造体などの複雑なオブジェクトになっていて、これらのルーチンがテキス トストリームでファイル位置を変更する方法のうち、移植性のある唯一のもの になっている場合もある。
If the stream refers to a regular file and the resulting stream offset is beyond the size of the file, subsequent writes will extend the file with a hole, up to the offset, before committing any data. See lseek(2) for details on file seeking semantics.
fgetpos(), fseek(), fsetpos(), ftell() は、それぞれ fflush(3), fstat(2), lseek(2), malloc(3) などのルーチンを呼び出す際に失敗する可能性がある。この場合は それぞれ対応した errno が設定される。
| インターフェース | 属性 | 値 |
| fseek(), ftell(), rewind(), fgetpos(), fsetpos() | Thread safety | MT-Safe |