fseek
stdio.h:インデックス への移動
ヘッダー ファイル
stdio.h
カテゴリ
入出力ルーチン
プロトタイプ
int fseek(FILE *stream, long offset, int whence); int _fseeki64(FILE *stream, __int64 offset, int whence);
説明
ストリーム上のファイル ポインタの位置を変更します。
fseek は、ストリームに関連付けられたファイル ポインタを、whence で指定されたファイル位置から offset バイト移動した新しい位置に設定します。 テキスト モードのストリームの場合、offset は 0
か ftell で返される値でなければなりません。
whence は 0
、1
、2
のいずれかの値(stdio.h で定義された以下の 3 つのシンボル定数を表す値)でなければなりません。
|
|
ファイルの先頭
|
|
|
現在のファイル ポインタの位置
|
|
|
ファイルの末尾
|
fseek は、ungetc を使って押し戻された文字をすべて廃棄します。 fseek はストリーム入出力に使用するものです。ファイル ハンドル入出力には lseek を使用してください。
fseek を行った後の、更新ファイルに対する次の操作は、入力と出力のどちらでもかまいません。
戻り値
fseek は、ポインタの移動が成功すれば 0
を、失敗すれば 0 以外を返します。
エラーが返された場合には、グローバル変数 errno に以下のいずれかの値が設定されています。
|
ファイル ポインタが不正です |
|
引数が無効です |
|
デバイスのシークが無効です |
例
#include <stdio.h> long filesize(FILE *stream); int main(void) { FILE *stream; stream = fopen("MYFILE.TXT", "w+"); fprintf(stream, "This is a test"); printf("Filesize of MYFILE.TXT is %ld bytes\n", filesize(stream)); fclose(stream); return 0; } long filesize(FILE *stream) { long curpos, length; curpos = ftell(stream); fseek(stream, 0L, SEEK_END); length = ftell(stream); fseek(stream, curpos, SEEK_SET); return length; }
移植性
POSIX | Win32 | ANSI C | ANSI C++ |
---|---|---|---|
+ |
+ |
+ |
+ |