FSEEK(3) FreeBSD ライブラリ関数マニュアル FSEEK(3)
名称
fgetpos, fseek, fseeko, fsetpos, ftell, ftello, rewind − ストリームの位置 変更 |
ライブラリ
標準 C ライブラリ (libc, −lc) |
書式
#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, const fpos_t *pos); #include <sys/types.h> |
int |
fseeko(FILE *stream, off_t offset, int whence); off_t |
ftello(FILE *stream); |
解説 |
fseek() 関数は、 stream が指すストリームのファイル位置インジケータを設定 します。新しい位置はバイト単位で計測され、 whence で指定された位置に offset バイトを足すことで得られます。 whence が SEEK_SET, SEEK_CUR, SEEK_END に設定されている場合、オフセットは、それぞれ、ファイルの最初、イ ンジケータの現在位置、ファイルの最後からの相対位置になります。 fseek() 関 数の呼び出しで問題が発生しない場合は、ストリームの end-of-file 指示子がク リアされ、そのストリームに対する ungetc(3) 関数の効果は取り消されます。 ftell() 関数は、 stream が指すストリームのファイル位置インジケータの現在 の値を入手します。 rewind() 関数は、 stream が指すストリームのファイル位置インジケータをファ イルの最初に設定します。これは、ストリームのエラーインジケータがクリアさ れること ( clearerr(3) を参照) を除けば、以下と同じ結果になります。 |
(void)fseek(stream, 0L, SEEK_SET) |
fseeko() 関数は fseek() と同様ですが、引数には long の代わりに off_t をと ります。同様に ftello() 関数は ftell() と同じですが、 off_t を返します。 fgetpos() 関数と fsetpos() 関数は、( whence を SEEK_SET に設定した ) ftell() や fseek() と同じインタフェースで、ファイルオフセットの現在の値を pos が参照するオブジェクトから設定したり、 pos が参照するオブジェクトに保 存したりします。一部の (UNIX 以外の) システムでは、 ‘‘fpos_t’’ オブジェク トが複合オブジェクトであるかもしれないので、移植性を保ちながらテキストス トリームの位置を変更するためには、このルーチンに依るしかないこともありま す。 |
戻り値
rewind() 関数は値を返しません。 関数 fgetpos(), fseek(), fseeko(), および fsetpos() は、処理が成功すると 値 0 を返します。そうでない場合、値 -1 が返され、グローバル変数 errno が 設定されてエラーを示します。 成功して終了すると、 ftell() および ftello() は現在のオフセットを返しま す。それ以外の場合は −1 が返され、グローバル変数 errno が設定されてエ ラーを示します。 |
エラー
[EBADF]
指定された stream が、シークできるストリームではありま せん。 [EINVAL] [EOVERFLOW] fgetpos(), fseek(), fseeko(), fsetpos(), ftell(), ftello() 関数が失敗した 時には、ルーチン fflush(3), fstat(2), lseek(2), malloc(3) について示して いるエラーが errno に設定されていることもあります。 関連項目 |
規格
fgetpos(), fsetpos(), fseek(), ftell(), rewind() 関数は、 ISO/IEC 9899:1990 (‘‘ISO C89’’) に適合しています。 fseeko() と ftello() 関数は、 Version 2 of the Single UNIX Specification (‘‘SUSv2’’) に適合しています。 FreeBSD 10.0 March 5, 1999 FreeBSD 10.0 |