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

C言語 fgetpos 使い方

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

fgetpos関数は現在のファイルポインタの位置を調べることが出来ます。

■書式
#include <stdio.h>
int fgetpos(FILE *fp, fpos_t *pos);

第一引数にはファイルポインタ
第二引数にはファイルポインタ位置を格納するfpos_t型のポインタ

を指定します。
戻り値は正常時は0、失敗時は0以外が返ります。
■サンプルコード
#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」です。


fpos_t型の実態はint64という64ビットの整数型です。
なので、fpos_t型の変数に格納されるファイルポインタの位置というのは、
そのファイルポインタ位置までのバイト数ということになります。

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

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