【发布时间】:2014-04-26 04:14:26
【问题描述】:
我正在尝试通过以下操作获取 C 中文件的大小...我是 C 新手
这是我文件顶部的 struct mem:
struct mem {size_t size;
};
这是使用局部变量/返回语句等的正确设置吗?
struct mem* fileSize(char* filename)
{
currentPos = lseek(filename, (size_t)0, SEEK_CUR);
size = lseek(filename, (size_t)0, SEEK_END);
lseek(filename, currentPos, SEEK_SET); // seek back to the beginning of file
return size;
}
【问题讨论】:
-
您缺少变量定义。或者,如果这些是全局变量,它们应该是本地变量。您应该粘贴完整的可编译代码。或者,如果问题在于获取要编译的代码,则包括编译器错误。
-
在它的初始化上方定义 currentPos?
-
请记住,如果文件中包含 holes,则像这样使用
lseek()不会为您提供磁盘上文件的实际大小。 -
lseek()也不将char *作为其第一个参数。这段代码 sn-p 有很多错误,很难知道从哪里开始。就目前而言,逻辑大致是正确的,但是当您将函数定义为返回struct mem *时,您尝试返回某种整数,对lseek()使用错误的参数等。
标签: c memory struct filesize lseek