我正在尝试创建一个程序来读取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(¤tPix, 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是文件 .