代码中的fread()函数问题

时间:2013-07-01 18:26:28

标签: c

我在C中编写了一个程序来打开位图图像并保存图像的尺寸。我在编写fread()函数时遇到了一些问题。请告诉我在我编写的代码中该函数的正确格式应该是什么。

这里我使用了指针数组,因为我必须打开多个位图图像。

#include<conio.h>
#include<stdio.h>
#include<stdlib.h>


void fskip(FILE *fp, int num_bytes)
{
   int i;
   for (i=0; i<num_bytes; i++)
      fgetc(fp);
}

typedef struct tagBITMAP              /* The structure for a bitmap. */
{
 int width;
 int height;
 //unsigned char *data;
} BITMAP;


int main()
{
    int temp1=0;
    BITMAP *bmp[50];

    FILE *fp = fopen("splash.bmp","rb");

    if (fp!=NULL && (fgetc(fp)=='B' && fgetc(fp)=='M')){

    bmp[temp1] = (BITMAP *) malloc (sizeof(BITMAP));

    fskip(fp,16);
    fread(&bmp[temp1].width, sizeof(int), 1, fp);

    fskip(fp,2);
    fread(&bmp[temp1].height,sizeof(int), 1, fp);



     fclose(fp);
     }
     else exit(0);

     getch();

     }

1 个答案:

答案 0 :(得分:0)

fread(&bmp[temp1].width, sizeof(int), 1, fp);

应该是:

fread(&(bmp[temp1]->width), sizeof(int), 1, fp);

因为bmp[temp1]是结构使用->运算符的地址而不是.同样的错误在第二个fread()中。

. DOT适用于名为element selection by reference的值变量 ->被称为element selection through pointer