-2

重複の可能性:
C でファイルのサイズをどのように決定しますか?

Cでファイルのサイズを取得するにはどうすればよいですか? C で記述されたアプリケーションで開きました。読み込んだファイルの内容を文字列に入れたいので、サイズを知りたいです。これは malloc() を使用して割り当てます。malloc(10000*sizeof(char) を書くだけ

4

5 に答える 5

3

fseek および ftell 関数を使用できます。

FILE* f = fopen("try.txt","rb");
fseek(f, 0, SEEK_END);
printf("size of the file is %ld", ftell(f));
于 2012-04-17T07:06:28.147 に答える
1

ファイルサイズについては、stat、lstat、または fstat が正しい選択になります。

ステータスを確認してください

于 2012-04-17T07:07:58.553 に答える
0
    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

于 2012-04-17T07:08:41.473 に答える
0

fseek を使用してファイルの最後に自分自身を配置し、そのために ftell() を使用できます。

FILE *fd;
fd = fopen("filename.txt","rb");
fseek ( fd, 0 , SEEK_END );
int fileSize = ftell(fd);

filesize にはサイズがバイト単位で含まれます。

ゲコド

于 2012-04-17T07:08:59.177 に答える
0

これには標準の C 関数があると思ったのですが、見つかりませんでした。

ファイルサイズが限られている場合は、izomorphius が提案するソリューションを使用できます。

ファイルが 2GB を超える可能性がある場合は、_filelengthi64 関数を使用できます ( http://msdn.microsoft.com/en-us/library/dfbc2kec(v=vs.80).aspxを参照)。残念ながら、これは Microsoft/Windows の機能であるため、他のプラットフォームでは使用できない可能性があります (ただし、他のプラットフォームでも同様の機能が見つかる可能性があります)。

編集:標準C関数に対するafge2の回答を見てください。残念ながら、これはまだ 2GB に制限されていると思います。

于 2012-04-17T07:11:42.467 に答える