我使用fmemopen
创建一个变量FILE* fid
将它传递给函数的读取从打开的文件数据。
某处在功能,它使用下面的代码,找出该文件的大小:
fseek(fid, 0, SEEK_END);
file_size = ftell(fid);
这种运作良好,在普通文件的情况下,但通过创建文件ID的情况下, fmemopen
我总是file_size = 8192
任何想法,为什么出现这种情况? 有没有得到正确的文件大小与创建两个常规文件和文件工作的方法fmemopen
?
编辑:我呼吁fmemopen
:
fid = fmemopen(ptr, memSize, "r");
其中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