>> C言語関数一覧トップに戻る

C言語 fseek 使い方

今回はC言語のfseek関数について説明します。

fseek関数はファイルポインタの位置を指定した位置に移動させることができる関数です。

■書式
#include <stdio.h>
int fseek(FILE *fp, long offset, int origin);

第一引数はファイルポインタ
第二引数はどれだけ移動させるかというオフセット値
第三引数はどの位置から移動させるかという定数

を指定します。
第三引数の定数は3種類あり、

・SEEK_SET (ファイルの先頭から)
・SEEK_CUR (ファイルの現在位置から)
・SEEK_END (ファイルの終端から)

という意味をそれぞれ持っています。
たとえば、

fseek(fp,10,SEEK_CUR)

だと、現在のファイルポインタの位置から10バイト後ろの位置にファイルポインタをずらす、
ということになります。

第二引数のオフセット値はマイナスも指定できます。
SEEK_ENDと組み合わせて、位置を末尾から前にずらすということもたまにします。
■サンプルコード
#include <stdio.h>

int main(void)
{
	fpos_t ft;
	FILE *fp;
	

	fp = fopen("test.txt","r");

	//ファイルポインタを末尾まで移動
	fseek(fp,0,SEEK_END);

	//ファイルポインタの位置を取得
	fgetpos(fp,&ft);

	printf("現在のファイルポインタの位置は「%d」です。\n",ft);

	fclose(fp);
	
	return 0;
}
■実行結果
現在のファイルポインタの位置は「6」です。



上記のコードはfseekでファイルの末尾までファイルポインタを移動させ、
その位置を取得して表示しています。
ファイルの末尾まで移動させた状態で、ファイルポインタ位置を取得するということは、
そのファイルのファイルサイズそのものを表すことになります。

このようなテクニックでファイルのファイルサイズを調べることができます。
>> 【C言語 rewind 使い方】に進む
>> C言語関数一覧トップに戻る