Manpages

名 前

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, const 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.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。

COMMENTS