我做了一個簡單的函數,它獲得了一個文件的大小。如何獲得大於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