I am having difficulties reading my imports from a Windows platform pe...any experienced help would be greatly appreciated...

Code:
int rva = header.OptionalHeader.DataDirectory[1].VirtualAddress;
 
   if(rva)
 {
    IMAGE_IMPORT_DESCRIPTOR temp, empty = {0};
  
    fseek(pe, rva, SEEK_SET);
    
       while(1)
    {
          if(!fread(&temp, sizeof(IMAGE_IMPORT_DESCRIPTOR), 1, pe))
       {
          out << "read error" << endl;
          break;
       }
         if(memcmp(&temp, &empty, sizeof(IMAGE_IMPORT_DESCRIPTOR))== 0)
      {
          break;
      }
       ++import_count;
  }
 

     if(import_count)
   {
        import = new IMAGE_IMPORT_DESCRIPTOR[import_count];
  
            if(!import)
            {
               import_count = 0;
               out << "allocation error" << endl;
            }
              else
            {
               fseek(pe, rva, SEEK_SET);
             
                   for(int i = 0; i < import_count; ++i)
                {
                     fread(&import[i], sizeof(IMAGE_IMPORT_DESCRIPTOR), 1, pe))
                }
            }
      }
 }