标题:文件指针问题
只看楼主
grassboy
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2009-8-13
结帖率:0
已结贴  问题点数:0 回复次数:2 
文件指针问题
我写了一个程序,读取一个BMP文件中的RGB分量并存在二维数组中,编译的时候出现三个warning,出来的结果也不对。大家帮我看看。我觉得程序大部分地方没有问题,问题就出现在倒数7~9行,不知道该怎么用文件指针。谢谢啦。
/**********************************************************/
//读取位图数据
#include <stdio.h>
#include <stdlib.h>
#include "GetImMessage.h"
/**********************************************************/  
void main()
{
    int i,j,k=0;
    unsigned char imager[512][512],imageg[512][512],imageb[512][512];  //存储图像的各个像素(此处的数组大小可根据位图信息动态修改)
    FILE *fp;
    char filename[20];

    printf("请输入文件的名称:\n");
    scanf("%s",filename);
    fp=fopen(filename,"r");
    if(fp==NULL)
    {
        printf("Open the file is fail!\n");
        exit(0);
    }
    readbitmap(fp); //读取位图信息

    fseek(fp,BITMAPFILEHEADER.bfOffBits,SEEK_SET);//将读写指针移到图像数据处

    for(j=511;j>=0;j--)   
        for(i=0;i<3*512;i+=3)   
        {   
            imager[j][i/3]=(unsigned char*)fp+512*(511-j)+i+2;
            imageg[j][i/3]=(unsigned char*)fp+512*(511-j)+i+1;
            imageb[j][i/3]=(unsigned char*)fp+512*(511-j)+i;
        }
    for(i=0;i<512;i++) //测试,第一行的红色分量
    {    
        printf("%4d",imager[0][i]);
    }
}

[ 本帖最后由 grassboy 于 2009-8-17 20:52 编辑 ]
搜索更多相关主题的帖子: BMP 文件指针 RGB 
2009-08-17 20:50
grassboy
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2009-8-13
得分:0 
说明一下,我的图像是512*512的24位真彩图。
2009-08-17 20:50
jig
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
帖 子:530
专家分:242
注 册:2005-12-27
得分:20 
好好看看 fopen 配套函数。你在读取数据的时候应该 fread();
用论坛置顶页的一个TC函数查询器查查就明白了。这套文件函数是标准C语言中的配套函数。
另外,操作BMP文件要注意每行数据,4字节对齐问题。其实本论坛有大量类似的程序和文章,可以使用搜索大量的查阅。
加油,还有很多东西可以学哦。

个人网站 -  http://.h001.
2009-09-02 13:14



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-283048-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.127339 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved