FILE   *fpa, *fpb;         fpa  =  fopen(filename, "rb");  
        fpb  =  fopen("temp.dat",  "wb"); 
        if (!fpa  || !fpb)  return ;         
         while (!feof(fpa))
  { 
             fprintf(fpb,  "%03d",  fgetc(fpa)); 
  }
         fclose(fpa); 
         fclose(fpb);能不能帮我看下这段代码为什么能够实现将BMP,JPG,GIF,AVI格式的文件转化为DAT文件 是什么原理
 if (!fpa || !fpb)       return ;         
          while (!feof(fpa))         
          {         
                          int       b;         
                          char       buf[4];         
                          fgets(buf,4,fpa);         
                          buf[3]=0;         
                          b=atoi(buf);         
                          if(b==-1) break ;         
                          fwrite(&b,1,1,fpb); 
  fflush(fpb);
          }
  fclose(fpa);         
          fclose(fpb);  这个为什么能将上述转化的DAT文件重新转化为原始文件(BMP,JPG,GIF,AVI)
不甚感激!

解决方案 »

  1.   


      FILE       *fpa,   *fpb;                  fpa     =     fopen(filename,   "rb ");    
                    fpb     =     fopen( "temp.dat ",     "wb ");  
                    if   (!fpa     ¦ ¦   !fpb)     return   ;                  
                      while   (!feof(fpa))
      {  
                              fprintf(fpb,     "%03d ",     fgetc(fpa));  
      }
                      fclose(fpa);   
    -----------------〉也就是说把一个byte(0x00-0xFF)变成三个字符"%03d",然后写到DAT文件中,DAT文件 可能就是每3个读的.if   (!fpa   ¦ ¦   !fpb)               return   ;                  
                        while   (!feof(fpa))                  
                        {                  
                                                        int               b;                  
                                                        char               buf[4];                  
                                                        fgets(buf,4,fpa);                  
                                                        buf[3]=0;                  
                                                        b=atoi(buf);                  
                                                        if(b==-1)   break   ;                  
                                                        fwrite(&b,1,1,fpb);  
        fflush(fpb);
                        }
        fclose(fpa);                  
                        fclose(fpb);  
    ---------------------------->通过atoi把写入的字符变成0x00-0xFF之间的数,然后再保存就行了。
      

  2.   

    我的意思是为什么是 "%03d "而不是其他的,还有就是buf为什么定义为4为 并且最后一位部分【3】=0;这个代码本身很简单,我需要的是帮忙解释一下这个代码的原理?