1
我想讀C. 一個大的二進制文件我寫了下面的代碼:的fread不讀如預期整個文件
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而停止?我能做些什麼來避免它?
'sizeof(buf)'將等於4或8,具體取決於您是否擁有32位的64位系統。在'fread'中使用'l'。 – lurker
沒有幫助。仍然是相同的結果 – one
fread返回讀取的項目數。在你的情況下,大小是l,數字是1. fread將返回1.交換參數l和1. –