最終更新日時:
が更新

履歴 編集

function
<cstdio>

std::fseek

namespace std {
  int fseek(FILE* stream, long offset, int origin);
}

概要

ファイルストリームの現在位置を移動する。

基準位置originからoffsetバイトの位置へ、次の入出力操作の位置を設定する。originには以下のいずれかを指定する。

説明
SEEK_SET ファイルの先頭
SEEK_CUR ファイルの現在位置
SEEK_END ファイルの終端

戻り値

成功した場合は0を、失敗した場合は0以外を返す。

備考

  • テキストモードで開いたストリームに対しては、offset0であるか、ftell()が返した値でなければならない。また、その場合のoriginSEEK_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

関連項目