苦しんで覚えるC言語

ファイルサイズの取得方法


ファイルサイズを知りたいのですが、そのための関数を教えてください。


C言語にはファイルサイズを知るための関数はありません。
ファイルサイズを知るには、ファイルを開いてからファイルポインタを移動して求めます。

fpos_t GetFileSize(const char *FileName[])
{
fpos_t fsize = 0;

FILE *fp = fopen(FileName,"rb");

/* ファイルサイズを調査 */
fseek(fp,0,SEEK_END);
fgetpos(fp,&fsize);

fclose(fp);

return fsize;
}
fpos_t はデータのサイズを意味する変数で、実態は符号なしの整数値です。int に変えてもさほど問題はありません。
また、ファイル操作の最中に求める場合、ファイルポインタを元の位置に戻すようにしないとバグになります。

fpos_t fsize = 0;
fpos_t fsizeb =  fseek(fp,0,SEEK_END);
fgetpos(fp,&fsize);
fseek(fp,fsizeb,SEEK_SET);

目次に戻る