C 弗瑞德归零
我有一个函数,可以将rom文件读入内存,并自动分配以适应该文件,但每次我尝试读取文件描述符时,fread()返回零。我不确定我做错了什么。有人能帮忙吗C 弗瑞德归零,c,file,file-io,C,File,File Io,我有一个函数,可以将rom文件读入内存,并自动分配以适应该文件,但每次我尝试读取文件描述符时,fread()返回零。我不确定我做错了什么。有人能帮忙吗 int read_rom(const char *filename, unsigned char ***rom) { int rom_size; FILE *fd = NULL; if((fd = fopen(filename, "r")) != NULL) { fseek(fd, 0, SEEK_END
int read_rom(const char *filename, unsigned char ***rom) {
int rom_size;
FILE *fd = NULL;
if((fd = fopen(filename, "r")) != NULL) {
fseek(fd, 0, SEEK_END);
rom_size = ftell(fd);
(*rom) = malloc(rom_size);
int read = fread(rom, 1, rom_size, fd);
fclose(fd);
printf("read: %d\n", read);
return rom_size;
}
return -1;
}
int main(int argc, char **argv) {
unsigned char rom_size = 0;
unsigned char **rom = NULL;
rom_size = read_rom(argv[1], &rom);
return 1;
}
有人吗?您没有在中阅读任何内容,因为您查看了文件的结尾。执行
fseek(fd,0,SEEK\u集)
返回文件开头,然后再执行fread
如果fread返回零,则文件结尾或出现错误
返回值
fread()和fwrite()返回成功读取的项目数
或
已写入(即,不是字符数)。如果发生错误,
或
到达文件末尾时,返回值为短项计数
(或
零)
fread()不区分文件结尾和错误,以及
来电者
必须使用feof(3)和ferror(3)来确定发生了什么
我建议您检查文件中的错误,如果出现错误,您应该打印相关的错误消息以获取更多信息!这应该是您当前调试的一部分,也是作为错误处理完成的代码的一部分。当
fread
返回零时,您可以使用feof
和ferror
来调查whay。或者,如果您愿意,可以使用rewind()-注意缺少的'f'oh jees,我忘了rewind()。。。我一定是瞎了。非常感谢你指出这一点。