C言語学習プロセス:fseekとftell関数
fseek関数は、ファイルの現在の読み書き位置を設定ためのものである.関数プロトタイプ:int fseek(FILE*fp,long offset,int origin);関数機能:fpのファイル読み書き位置ポインタを指定した位置に移動する.fseek(fp,20,SEEK_SET); fpファイルの読み書き位置ポインタをファイルから20バイト後ろに移動することを意味する.ftell関数は、ファイルの現在の読み書き位置を取得するために使用されます.関数プロトタイプ:long ftell(FILE*fp)関数機能:ストリームファイルの現在の読み書き位置を得る、その戻り値は現在の読み書き位置がファイルヘッダからずれるバイト数である.ban=ftell(fp); fpで指定するファイルの現在の読み書き位置を取得し、その値を変数banに渡す.fseek関数とftell関数の総合応用:分析:fseek関数で位置ポインタをファイルの最後に移動することができて、更にftell関数でこの時の位置ポインタがファイルの頭からのバイト数を得ることができて、このバイト数はファイルの長さです.
#include <stdio.h>
main()
{
FILE *fp;
char filename[80];
long length;
printf(" :");
gets(filename);
//
fp=fopen(filename,"rb");
if(fp==NULL)
printf("file not found!/n");
else
{
//
fseek(fp,OL,SEEK_END);
// ;
length=ftell(fp);
printf(" %1d /n",length);
fclose(fp);
}
}
:
void main()
{
char inFilename[128];
........// inFilename[]
fp = fopen(inFilename, "rb");// inFilename
if(fp == NULL)
{
result = FALSE;
RETAILMSG(1,(L"file open error : %s/n", inFilename));
break;
}
//
fseek(fp, 0, SEEK_END);//
fileSize = ftell(fp);//
fseek(fp, 0, SEEK_SET);//
......
}