如何将二进制文件的内容复制到数组中
How to copy the content of a binary file into an array
我目前正在开发 chip-8 仿真器,我有一种方法可以通过将二进制文件复制到名为 'memory' 的数组中来加载程序。但是,它不像教程页面上提到的那样工作,我有点困惑。我已经研究过这个问题,但找不到对我的具体问题有帮助的任何东西。谢谢你,leon4aka
void chip8c::loadSoftware(char* filepath)
{
FILE* fptr = NULL;
u32 fsize;
fptr = fopen(filepath, "rb"); // reading in binary mode
if(fptr == NULL)
printf("Error: invalid filepath");
fseek(fptr, 0, SEEK_END);
fsize = ftell(fptr); // getting file size
fseek(fptr, 0, SEEK_SET);
for(int i = 0; i < fsize; i++)
memory[i] = fptr[i]; // ! Does not work !
fclose(fptr);
}
我尝试使用如上所示的 for 循环复制文件的内容,但没有成功。
你没有阅读。您需要使用“读取”功能从文件中读取。请阅读here
替换
memory[i] = fptr[i]; // ! Does not work !
与
memory[i] = fgetc(fptr); // ! Does work !
我目前正在开发 chip-8 仿真器,我有一种方法可以通过将二进制文件复制到名为 'memory' 的数组中来加载程序。但是,它不像教程页面上提到的那样工作,我有点困惑。我已经研究过这个问题,但找不到对我的具体问题有帮助的任何东西。谢谢你,leon4aka
void chip8c::loadSoftware(char* filepath)
{
FILE* fptr = NULL;
u32 fsize;
fptr = fopen(filepath, "rb"); // reading in binary mode
if(fptr == NULL)
printf("Error: invalid filepath");
fseek(fptr, 0, SEEK_END);
fsize = ftell(fptr); // getting file size
fseek(fptr, 0, SEEK_SET);
for(int i = 0; i < fsize; i++)
memory[i] = fptr[i]; // ! Does not work !
fclose(fptr);
}
我尝试使用如上所示的 for 循环复制文件的内容,但没有成功。
你没有阅读。您需要使用“读取”功能从文件中读取。请阅读here
替换
memory[i] = fptr[i]; // ! Does not work !
与
memory[i] = fgetc(fptr); // ! Does work !