Tag: filesize

如何在c中获取文件长度?

我只是有一个关于如何获取包含hex数字的文件长度的快速问题。 例如: 724627916C 我能想到的唯一方法是将hex值转换为二进制: 724627916C => 0111001001000110001001111001000101101100 然后计算二进制值的位数。 只是想知道这是否正确? 谢谢

确定MinGW 32位C中的64位文件大小

我试图让这个在MinGW 32位工作时疯狂。 它适用于我尝试过的所有其他平台。 我想要做的就是将> 4GB文件的大小变为64位int。 这适用于其他平台: #define _FILE_OFFSET_BITS 64 #include int64_t fsize(const char *filename) { struct stat st; if (stat(filename, &st) == 0) return st.st_size; return -1; } 我尝试在上面的代码之前添加以下定义,基于我在网上找到的各种建议: #define _LARGEFILE_SOURCE 1 #define _LARGEFILE64_SOURCE 1 #define __USE_LARGEFILE64 1 还尝试过: #ifdef __MINGW32__ #define off_t off64_t #endif 最后尝试将-D_FILE_OFFSET_BITS = 64添加到gcc标志(应该与上面的定义相同但是……) 没运气。 返回的int64_t仍然被截断为32位值。 在MinGW 32位中确定64位文件大小的正确方法是什么? 谢谢!

获取C中的大文件大小

在有人抱怨“重复”之前,我一直在彻底检查SO,但似乎还没有干净的答案,尽管问题看起来很简单。 我正在寻找一个可移植的C代码 ,它能够提供文件的大小,即使这样的文件大于4GB。 通常的方法(fseek,ftell)工作正常,只要文件仍然<2GB。 它在各处得到了相当好的支持,所以我试图找到相同的东西。 不幸的是,所有编译器都不支持更新的方法(fseeko,ftello)。 例如,MinGW错过了它(显然是MSVC)。 此外,一些评论让我相信新的返回类型(off_t)不一定支持> 2GB的大小,它可能依赖于一些外部参数来进行检查。 MSVC不支持明确的方法(fseeko64,ftello64)。 MS提供等效的_fseeki64和_ftelli64。 这已经很糟糕,但它变得更糟:一些Linux配置似乎在运行时严重支持这些function。 例如,我在PowerPC上的Debian Squeeze,使用GCC 4.4,将使用fseeko64产生一个“filesize”方法,它始终返回0(虽然它适用于Ubuntu64)。 MinGW似乎回答了2GB以上的随机垃圾。 好吧,就可移植性而言,我有点无能为力。 如果我需要制作一堆#if #else,那么为什么不首先直接使用OS和编译器细节方法,例如用于MSVC的GetFileSize()。