我正在尝试用 C 读取一个大型二进制文件。我编写了以下代码:
FILE* f1 = fopen("filename.exe", "rb");
if(f1 != NULL)
{
fseek(f1,0,SEEK_END);
long l = ftell(f1);
fseek(f1,0,SEEK_SET);
char * buf = (char *)malloc(l* sizeof(char));
int k = fread(buf,sizeof(buf),1,f1);
if(k != l)
printf("the file was not read properly");
}
现在,不仅k
不等于l
,而且要小得多(l
约为 99,000,000 而k
只有 13)。
是否有可能fread
因为它在文件中达到 NULL 而停止?我能做些什么来避免它?