Skip to content

Latest commit

 

History

History
83 lines (65 loc) · 2.21 KB

File metadata and controls

83 lines (65 loc) · 2.21 KB

fseek

  • cstdio[meta header]
  • std[meta namespace]
  • function[meta id-type]
namespace std {
  int fseek(FILE* stream, long offset, int origin);
}
  • FILE[link file.md]

概要

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

基準位置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);
}
  • std::fseek[color ff0000]
  • std::fopen[link fopen.md]
  • std::fclose[link fclose.md]
  • std::fputs[link fputs.md]
  • std::fgetc[link fgetc.md]
  • std::printf[link printf.md]
  • std::FILE[link file.md]
  • SEEK_SET[link seek_set.md]
  • SEEK_CUR[link seek_cur.md]
  • SEEK_END[link seek_end.md]

出力

C
E
E

関連項目