重複の可能性:
C でファイルのサイズをどのように決定しますか?
Cでファイルのサイズを取得するにはどうすればよいですか? C で記述されたアプリケーションで開きました。読み込んだファイルの内容を文字列に入れたいので、サイズを知りたいです。これは malloc() を使用して割り当てます。malloc(10000*sizeof(char) を書くだけ
重複の可能性:
C でファイルのサイズをどのように決定しますか?
Cでファイルのサイズを取得するにはどうすればよいですか? C で記述されたアプリケーションで開きました。読み込んだファイルの内容を文字列に入れたいので、サイズを知りたいです。これは malloc() を使用して割り当てます。malloc(10000*sizeof(char) を書くだけ
fseek および ftell 関数を使用できます。
FILE* f = fopen("try.txt","rb");
fseek(f, 0, SEEK_END);
printf("size of the file is %ld", ftell(f));
ファイルサイズについては、stat、lstat、または fstat が正しい選択になります。
ステータスを確認してください
int Get_Size( string path )
{
FILE *pFile = NULL;
// get the file stream
fopen_s( &pFile, path.c_str(), "rb" );
// set the file pointer to end of file
fseek( pFile, 0, SEEK_END );
// get the file size
int Size = ftell( pFile );
// return the file pointer to begin of file if you want to read it
rewind( pFile );
// close stream and release buffer
fclose( pFile );
return Size;
}
その他の回答cplusplus.com
fseek を使用してファイルの最後に自分自身を配置し、そのために ftell() を使用できます。
FILE *fd;
fd = fopen("filename.txt","rb");
fseek ( fd, 0 , SEEK_END );
int fileSize = ftell(fd);
filesize にはサイズがバイト単位で含まれます。
ゲコド
これには標準の C 関数があると思ったのですが、見つかりませんでした。
ファイルサイズが限られている場合は、izomorphius が提案するソリューションを使用できます。
ファイルが 2GB を超える可能性がある場合は、_filelengthi64 関数を使用できます ( http://msdn.microsoft.com/en-us/library/dfbc2kec(v=vs.80).aspxを参照)。残念ながら、これは Microsoft/Windows の機能であるため、他のプラットフォームでは使用できない可能性があります (ただし、他のプラットフォームでも同様の機能が見つかる可能性があります)。
編集:標準C関数に対するafge2の回答を見てください。残念ながら、これはまだ 2GB に制限されていると思います。