我在用着fmemopen
创建一个变量FILE* fid
将其传递给从打开的文件读取数据的函数。
在该函数的某处,它使用以下代码来查找文件的大小:
fseek(fid, 0, SEEK_END);
file_size = ftell(fid);
这对于常规文件来说效果很好,但是对于由fmemopen
我总是得到file_size = 8192
有什么想法为什么会发生这种情况吗?
有没有一种方法可以获取适用于常规文件和使用创建的文件的正确文件大小fmemopen
?
EDIT:我的电话fmemopen
:
fid = fmemopen(ptr, memSize, "r");
where memSize
!= 8192
EDIT2:
我创建了一个最小的例子:
#include <cstdlib>
#include <stdio.h>
#include <string.h>
using namespace std;
int main(int argc, char** argv)
{
const long unsigned int memsize = 1000000;
void * ptr = malloc(memsize);
FILE *fid = fmemopen(ptr, memsize, "r");
fseek(fid, 0, SEEK_END);
long int file_size = ftell(fid);
printf("file_size = %ld\n", file_size);
free(ptr);
return 0;
}
顺便说一句,我目前正在另一台计算机上工作,在这里我得到 file_size=0