我做了一个简单的函数,它得到一个文件的大小。
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”来打印它。