搞定了,原来有个fseek函数可以用,错的原因是fp并不能代表文件的真实位置。呵呵上代码和
程序代码:
//盛杰瑞办公设备实验室 //输入x,y坐标,输出改点图像rgb值 #include <stdio.h> #include <stdlib.h> #include <string.h> int main() {while(1){ FILE *fp; int i,x,y; //x,y是坐标 int x1; //真实坐标的偏移量 int y1; //x坐标宽度 unsigned char wenjiantou[100]; unsigned char point[3]; if((fp=fopen("D:\\CC\\test.bmp","rb+"))==NULL) // 打开磁盘文件 { printf("can't open file!\n"); exit(0); } printf("要输出点的坐标是(用空格分开x y):"); scanf ("%d %d",&x,&y); fread(&wenjiantou,1,100,fp); ///把文件头若干个字节放到数组里 x1=wenjiantou[10]; //提取偏移量给x1一个24位色的100*100的bmp图像test.zip (631 Bytes)y1=wenjiantou[18]; //提取宽度给y1 //for (i=0;i<3;i++) fseek(fp,(3*x+y1*y+x1),0); fread(&point,1,3,fp); //读取指定位置3个字节数据+(3*x+y1*y+x1) for (i=0;i<3;i++) printf ("%x ",point[i]); //输出点的buf 16进制方便观察 return 0; fclose(fp);}// 关闭文件} }
test.zip
(631 Bytes)
[此贴子已经被作者于2017-2-4 18:11编辑过]
我是硬件工程师