Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何为fread设定起点?_C_Fread_Stdio_Fseek - Fatal编程技术网

C 如何为fread设定起点?

C 如何为fread设定起点?,c,fread,stdio,fseek,C,Fread,Stdio,Fseek,我试图使用fseek和fread将二进制文件Game Boy ROM的字节0x0100-0x3FFF复制到模拟地址空间的字节0x0100-0x3FFF;但是,我不知道如何使用fread开始写入addressSpace中的特定字节。这是受影响的代码;它按照预期在ROM的0x0100处开始读取,但写入地址空间的0x0000-0x3EFF,我的问题是,如何让fread在0x0100处开始写入 #include <stdio.h> #include <stdint.h> uin

我试图使用fseek和fread将二进制文件Game Boy ROM的字节0x0100-0x3FFF复制到模拟地址空间的字节0x0100-0x3FFF;但是,我不知道如何使用fread开始写入addressSpace中的特定字节。这是受影响的代码;它按照预期在ROM的0x0100处开始读取,但写入地址空间的0x0000-0x3EFF,我的问题是,如何让fread在0x0100处开始写入

#include <stdio.h>
#include <stdint.h>

uint8_t addressSpace[0x10000];

int main()
{
    FILE* gameROM = fopen("rom.gb", "rb");
    if (gameROM == NULL || sizeof(addressSpace[0]) != 1)
    {
        printf("Error");
        getchar();
        fclose(gameROM);
        return 1;
    }
    fseek(gameROM, 0x100, SEEK_SET);
    fread(addressSpace, sizeof(addressSpace[0]), 0x3EFF, gameROM);
    printf("\n%X\n", addressSpace[0x100]);
    getchar();
    return 0;
}
loc是您要写入addressspace的位置

loc是您要写入addressspace的位置


非常感谢,两个答案都是我需要的。非常感谢,两个答案都是我需要的。
//                     v-- here
fread(addressSpace + 0x100, sizeof(addressSpace[0]), 0x3EFF, gameROM);
fread(addressSpace+loc, sizeof(addressSpace[0]), 0x3EFF, gameROM);
loc = 0x0100