Остальное не «не прочитать»;вы говорите, что нужно прочитать только один unsigned short
.
fread(theMachineState->memory, 1, sizeof(unsigned short), src_file);
Второй и третий аргументы называются size
и nmemb
, которые означают размер каждого элемента данных иколичество элементов данных для чтения.Вы передаете 1 (т. Е. Каждый элемент составляет 1 байт) и sizeof(unsigned short)
, что, вероятно, равно 2. Итак, вы говорите ему прочитать два байта.
Возможно, вы хотели сделать что-то вроде:
fread(theMachineState->memory, sizeof(unsigned short), 65536, src_file);
(который вернет число прочитанных значений unsigned short
, т.е. 65536, если он заполнит весь буфер), или:
fread(theMachineState->memory, 1, sizeof(theMachineState->memory), src_file);
(который вернет число bytes read, т.е., вероятно, 131072, если он заполняет весь буфер).