C语言中fread读文件,屏幕打印正确,但运算不对,求高人帮帮
本人写了一个C语言读灰度图像文件t.jpg的程序:读出的数据显示出来是对的,但运算起来不对劲t.jpg文件的全部内容如下,需要说明下我这里的jpg是没有经过压缩编码的原始灰度数据,
只是在文件前三行自动加上了如下的头文件:
P2
64 48
255
098 111 110 097 111 113
101 115 116 112 124 112
113 127 113 112 112 101
112 110 099 113 113 165
178 112 113 126 115 116
125 112 113 114 103 113
112 165 172 110 119 124
093 098 112 111 110 097
......接下来的数据我在程序中没有读,只读1*48个测试文件中共有64*48个灰度数据
程序如下(篇幅限制,我这里只读文件开始1*48个数据):
{
FILE * fp=fopen("t.jpg","r"); //指针指向t.jpg
int buf[64][48],test[64][48];
int i,j;
fseek(fp,13,0); //这里我使用fseek函数跳过文件中开始的 非图像数据的前三行
for (i=0;i<1;i++) //篇幅限制 只读出一行(这里每行48个数据)
{
for(j=0;j<48;j++) //每行48个数据
{
fread(&buf[i][j],4,1, fp); //用fread函数读出文件到buf,
我的设置是以4个字节为基本单位读出,因为原数据里如“098 ”有一个空格,我也把它读进来了
if((j%6)==5){fseek(fp,1,1);} //因为原数据第五行开始每行(六个数据)后有一个回车,
通过指针+1跳过回车
test[i][j]=(buf[i][j]+1); //读完数据后,我再把buf读到的数据每个都加1看正不正确
}
}
printf("buf= %s\n",buf); //显示读到的数据
printf("test= %s\n",test); //显示加1后的数据
fclose(fp);
}
运行后,结果如下:
buf= 098 111 110 097 111 113 101 115 116 112 124 112 113 127 113 112 112 101 112 110
099 113 113 165 178 112 113 126 115 116 125 112 113 114 103 113 112 165 172 110
119 124 093 098 112 111 110 097
test= 198 211 210 197 211 213 201 215 216 212 224 212 213 227 213 212 212 201 212 210
199 213 213 265 278 212 213 226 215 216 225 212 213 214 203 213 212 265 272 210
219 224 193 198 212 211 210 197
结果中test里的元素不=buf+1,而成了buf+100,实在不明白怎么回事,请高手帮帮小弟!万分感谢
小弟在线等待