title: Trouble reading .bmp header file properly
body: <p>I am trying to take in a .bmp file and eventually edit the pixels one by one but I am coming up with a problem with the width and height returned to me in the INFOHEADER struct. The width returned is 13107200 and the height is 65536. However, whenever I run through the program a total of only 60003 total pixels are counted. I have no idea why this is. Any help would be greatly appreciated.</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  #include &lt;stdlib.h&gt;
  
  int main( int argc, char *argv[] ){
      //define structures
          typedef struct 
          {   unsigned short int Type; /* Magic identifier */
              unsigned int Size; /* File size in bytes */
              unsigned short int Reserved1, Reserved2;
              unsigned int Offset; /* Offset to data (in B)*/
          }HEADER; /* -- 14 Bytes -- */
  
          typedef struct 
          {   unsigned int Size; /* Header size in bytes */
              int Width, Height; /* Width / Height of image */
              unsigned short int Planes; /* Number of colour planes */
              unsigned short int Bits; /* Bits per pixel */
              unsigned int Compression; /* Compression type */
              unsigned int ImageSize; /* Image size in bytes */
              int xResolution, yResolution;/* Pixels per meter */
              unsigned int Colors; /* Number of colors */
              unsigned int ImportantColors;/* Important colors */
          }INFOHEADER; /* -- 40 Bytes -- */
  
          typedef struct
          { unsigned char Red, Green, Blue;
          }PIXEL;
  
      //make instance of all three structures
      HEADER data;
      INFOHEADER data2;
      PIXEL pixel;
  
      //declare file read pointer
      FILE *file;
  
      //declare fileout read pointer
      //FILE *fileout; //declare file printed file pointer
  
      // open file 1 of argument counter and return 0 apon error
      if( !(file = fopen( "CU.bmp","rb")))return  0;  
      //read HEADER data into data
      fread(&amp;data,sizeof(HEADER),1,file);
      //read IB+NFOHEADER data into data2
      fread(&amp;data2,sizeof(INFOHEADER),1,file);
      //Print PIXEL data      
  
      //Allocate space for pixelarray
      PIXEL **pixelarray;
      int r=0,c=0,rows=data2.Height,collumns=data2.Width;
      pixelarray= malloc(rows*sizeof(PIXEL *));
      for(r=0; r&lt;rows; r++){
          pixelarray[r]=malloc(collumns*sizeof(PIXEL));
      }
  
      //fill pixel array with pixel structs
      r=0;c=0;
      int pixelnum=1;
      while( fread(&amp;pixel,sizeof(PIXEL),1,file) ){
          if(c == collumns){
              c=0;
              r++;
          }
          pixelarray[r][c] = pixel;
          printf("\nPixel %10d: %02X%02X%02X",pixelnum,pixelarray[r][c].Red,pixelarray[r][c].Blue,pixelarray[r][c].Green);
          fflush(stdout);
          c++;pixelnum++;
  
      }
  
      free(pixelarray);   
  
      fclose(file);  //close the files prior to exiting
  </code></pre>