我正在尝试创建一个程序来读取C中的.ppm文件,该文件读取原始数据并将其转换为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;
}

这实际上适用于输出 0.4.4 0.4.4 0.4.4 0.5.5 0.6.6 的前5个像素

但之后,它只是吐出一些错误的值,然后永远重复 0.33.90 0.33.90 .

有没有人知道我做错了什么?

图像是P6 500x500,但为了简单起见,我删除了 Headers . here是文件 .