Чтение PPM в C с помощью fread () возвращает только первые 5 значений - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь создать программу для чтения файла .ppm в C, который считывает необработанные данные и преобразует их в значения RGB.Мой код работает нормально до 5-го пикселя, затем он просто начинает повторять тот же вывод до EOF.

Вот мой маленький код:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

typedef struct {
  unsigned char r,g,b;
} pixel;

int main(int argc,char* argv[]){

  FILE* fileOBJ;
  FILE* outFileOBJ;

  pixel currentPix;

  fileOBJ = fopen("pic.ppm","r");
  outFileOBJ = fopen("out.txt","w+");
  for (int i =0;i<(128*128);i++){
    fread(&currentPix, 3, 1, fileOBJ);
    fprintf(outFileOBJ,"%d.%d.%d ", currentPix.r, currentPix.g, currentPix.b);
  }

return 0;
}

, и это на самом деле работает для первого5 пикселей с выводом 0.4.4 0.4.4 0.4.4 0.5.5 0.6.6

, но потом просто выплевывает несколько неправильных значений, а затем повторяет 0.33.90 0.33.90 навсегда.

Кто-нибудь знает, что я делаю неправильно?

Изображение P6 500x500, но я удалил заголовок для простоты. здесь - это файл.

...