ファイルのサイズを取得する単純な関数を作成しました。
int file_size( char * filename )
{
int size;
struct stat st;
stat( filename, &st );
size = st.st_size;
return size;
}//file_size
正常に動作していますが、サイズが4Gbより大きいファイルがある場合、負の数が返されます。もちろん、これは正しいファイルサイズではありません。では、どうすればこのような大きなファイルのサイズを取得できますか?戻り値はintのようなものでなければならないと思いますが、私には何がわからないので、それで問題が解決するとは思いません。
ありがとう、
カンピ
アップデート:
やあ!
私は解決策を見つけました。__stat64を使用する必要があります。関数を変更しましたが、実際のサイズを取得しています。8Gbの大きなファイルでテストしました。
unsigned long long int file_size( char * filename )
{
unsigned long long int size;
struct __stat64 st;
__stat64( filename, &st );
size = st.st_size;
return size;
}//file_size
そして通知:
printfを使用したときは、「%I64d」を使用して印刷する必要がありました。