Я пытаюсь читать в 256 байтах в буфер из файла размером 65536 байт, рассматривая его как файл с произвольным доступом, используя fopen, fread, fwrite и fseek. Я не получаю никаких ошибок, но после чтения буфер остается пустым, хотя файл не является пустым, а исправленные отчеты читают 256 байтов. Вот мой код:fread в буфер пуст, несмотря на непустой файл
FILE *file = NULL;
char buffer[255];
memset(buffer, 0, sizeof(buffer));
file = fopen("BACKING_STORE.bin","r");
if(file == NULL) {
printf("Error: can't open file.\n");
return NULL;
} // end if
if(fread(buffer, 1, 256, file) != 256) {
printf("Error: reading from file failed.\n");
return NULL;
} // end if
printf("The bytes read are [%s]\n", buffer);
fclose(file);
И только, чтобы подтвердить, что я открыл файл BACKING_STORE.bin в шестнадцатеричном редакторе, просто чтобы убедиться, что она не была пуста. Вот скриншот этого:
После запуска этой программы я получаю вывод: «Чтение байтов - []», но без ошибок.
Я довольно новичок в C, поэтому я уверен, что это просто что-то простое, что мне не хватает.
Спасибо за помощь. :)
Неопределенное поведение: ваш буфер 255 байт, но вы читаете 256. – Olaf