C言語 ファイル位置の取得 ファイルサイズの取得 - stdio.h - [ ftell ]

2008.09.28 Sunday | by LRESULT


ァイル位置の取得は、ftell()を使用します。

ファイル位置とは、カーソル位置のようなもので
読み込み書き込みの規準となる位置のことです。


ftell
書式 long ftell( FILE *fp )
機能 現在のファイル位置を取得
引数 FILE *fp : ファイル(ストリーム)ポインタ
戻り値 成功すると、現在のファイル位置を返し、
失敗すると、-1を返します。





サンプルコード
指定したファイル「test.txt」のファイルサイズを取得します。
#include <stdio.h>

int main(void)
{
  FILE *fp;
  char *fname = "test.txt";
  long sz;

  fp = fopen( fname, "rb" );
  if( fp == NULL ){
    printf( "%sファイルが開けません¥n", fname );
    return -1;
  }

  fseek( fp, 0, SEEK_END );
  sz = ftell( fp );
  printf( "%sファイルのサイズ:%d バイト", fname, sz );

  fclose( fp );
  return 0;
}



結果
test.txtファイルのサイズ:50 バイト
というように、「test.txt」ファイルのサイズが表示されるはずです。
まず、fseek()でファイル終端(SEEK_END)までファイル位置を移動させ、
ftell()で、現在のファイル位置を取得しています。

それと、fopen()で開く際には、バイナリモードで開くようにしましょう。
環境によって変わるらしいですが、バイナリモードのほうが確実です。

今回はftell()を使用しましたが、
long型ftell()よりも、fpos_t型fgetpos()を使用したほうが
2GBを超えるファイルを扱える為、確実だと思います。

カテゴリ:C言語 stdio.h | 22:01 | comments(1) | trackbacks(0) | -


コメント

管理者の承認待ちコメントです。

| - | 2016/09/24 3:19 AM |

コメントする











この記事のトラックバックURL

http://simd.jugem.jp/trackback/57

トラックバック