我做了一个简单的函数,它获得了一个文件的大小。如何获得大于4 Gb的文件大小?
int file_size(char * filename)
{
int size;
struct stat st;
stat(filename, &st);
size = st.st_size;
return size;
}//file_size
它工作正常,但如果我有一个文件,该文件的大小大于4GB的比我得到一个是负面的多少回了,当然这是不正确的文件大小。那么我怎么能得到这样一个大文件的大小?我认为,返回值应该像int一样,但我不知道是什么,我不认为这会解决我的问题。
感谢,
kampi
更新:
嗨!
我找到了解决方案。我必须使用__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的” 打印出来。
如果将'int'更改为'off_t',或者如果不可用'size_t',该怎么办?在返回类型和'size'声明中。 – 2010-03-02 07:07:06