namespace std {
int fseek(FILE* stream, long offset, int origin);
}
概要
ファイルストリームの現在位置を移動する。
基準位置originからoffsetバイトの位置へ、次の入出力操作の位置を設定する。originには以下のいずれかを指定する。
| 値 | 説明 |
|---|---|
SEEK_SET |
ファイルの先頭 |
SEEK_CUR |
ファイルの現在位置 |
SEEK_END |
ファイルの終端 |
戻り値
成功した場合は0を、失敗した場合は0以外を返す。
備考
- テキストモードで開いたストリームに対しては、
offsetは0であるか、ftell()が返した値でなければならない。また、その場合のoriginはSEEK_SETでなければならない - この関数の呼び出しによって、ファイルの終端フラグはクリアされる
ungetc()で戻した文字は破棄される- ファイルの位置をより移植性の高い形で扱うには、
fgetpos()とfsetpos()を使用する
例
#include <cstdio>
int main()
{
std::FILE* fp = std::fopen("test.txt", "w+");
std::fputs("ABCDEF", fp);
// ファイルの先頭から2バイトの位置へ移動する
std::fseek(fp, 2, SEEK_SET);
std::printf("%c\n", std::fgetc(fp));
// 現在位置から1バイト進んだ位置へ移動する
std::fseek(fp, 1, SEEK_CUR);
std::printf("%c\n", std::fgetc(fp));
// ファイルの終端から2バイト戻った位置へ移動する
std::fseek(fp, -2, SEEK_END);
std::printf("%c\n", std::fgetc(fp));
std::fclose(fp);
}
出力
C
E
E