Я пытаюсь прочитать байты файла изображения на C, в частности PNG, следующим образом:
#include <stdio.h>
int main(){
FILE* fd = fopen("logo.png", "r");
char c = fgetc(fd);
while(c != EOF){
printf("%c", c);
c = fgetc(fd);
}
return 0;
}
Когда я запускаю программу, я получаю следующее:
<89>PNG^M
^Z
^@^@^@^MIHDR^@^@^@
Почему он переходит только к определенному байту, а затем полностью прекращает чтение файла? Как мне исправить эту проблему?
fopen("logo.png", "r");
- ›fopen("logo.png", "rb");
Открыть в двоичном режиме. - person chux - Reinstate Monica   schedule 27.01.2017"b"
) как\r\n
‹==›\r
. Файлы .png являются бинарными (добавить"b"
). Перевод не нужен. - person chux - Reinstate Monica   schedule 27.01.2017