Q&A

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

MMGames

ファイルサイズ



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


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);

<-前に戻る  トップに戻る        

サイト目次


第0部:プログラム概要編

  1. プログラムとは何か?

2章:プログラムの書き方

  1. 書き方のルール
  2. 書き方の慣習
  3. 練習問題2

3章:画面への表示

  1. 文字列の表示
  2. 改行文字
  3. 練習問題3

6章:キーボードからの入力

  1. 入力用の関数
  2. 入力の恐怖
  3. 練習問題6

9章:回数が決まっている繰り返し

  1. 繰り返しを行う文
  2. ループ動作の仕組み
  3. 練習問題9

10章:回数がわからない繰り返し

  1. 回数不明ループ
  2. 入力チェック
  3. 練習問題10

13章:複数の変数を一括して扱う

  1. 複数の変数をまとめて扱う
  2. 配列の使い方
  3. 練習問題13

20章:複数のソースファイル

  1. 最小限の分割
  2. 分割の定石
  3. 練習問題20