小弟我的图象复制,为何下面这个程序实现不了.新手

我的图象复制,为何下面这个程序实现不了..新手


#include   "stdio.h "
#include   <file.h>

main()
          {      
 
      long   filelength1   =   0;
                FILE *fp1,*fp2;
                int   i;
                unsigned   char   *buf;/*定义一个文件指针*/
                    fp1   =   fopen( "c:\\test.bmp ", "rt+ ")   ;//打开源文件
                    fp2   = fopen( "c:\\testcopy2.bmp ", "wt+ ");//创建目标文件
                    if(fp1   ==   NULL)
            {
            puts( "open       file       txt       error! ");      
                                  exit(1)       ;      
            }
            fseek(fp1,0,SEEK_END);
            filelength1   =   ftell(fp1);   //返回源文件大小
    buf=(unsigned   char   *)malloc(filelength1);//创建内存
           
                  fseek(fp1,0,SEEK_SET);
  //   应该是以下这两步,麻烦你帮我讲解下这里为何不行        
                  fread(buf,1,filelength1,fp1);//读入内存
                  fwrite(buf,1,filelength1,fp2);//写入目标文件


/////////////////////////////////////////////
            free(buf);//释放内存
            fclose(fp1);   //关闭打开的文件
    fclose(fp2);
    exit(1);
                     
          }  


请问以上程序为何无法实现图象的复制?思路错在哪里?跟图象格式有关系吗?新手,望见谅,谢谢你抽时间

------解决方案--------------------
lz把文件打开方式用rb+、wb+试一试
------解决方案--------------------
使用rb+,wb+可以的...4256*2848成功