为什么我写的图片文件合成器合成后改缀名之后不能用?

下面是我写的合成器代码,可以正常合成,exe文件和jpg、rar在一个文件里,就是合成之后改rar后,提示rar文件损坏无法打开!我是V C++6.0,win10系统。求解答:

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

void main()
{
    FILE *fp1,*fp2,*fp3;
    char ch,filename1[20],filename2[20],filename3[20];
    printf("请输入第一个文件的名称:");
    gets(filename1);
    if(!(fp1 = fopen(filename1,"rb")))
    {
        printf("文件找不到,打开失败!\n");
        exit(0);
    }
    printf("请输入第二个文件的名称:");
    gets(filename2);
    if(!(fp2 = fopen(filename2,"rb")))
    {  
        printf("文件找不到,打开失败!\n");
            exit(0);
    }
    printf("请输入要生成的文件名:");
    gets(filename3);
    if((fp3 = fopen(filename3,"wb")))
    {
            printf("正在合并,请稍后!\n");
            while(!feof(fp1))
                {   
                        ch = fgetc(fp1);
                        fputc(ch,fp3);
                }
            fclose(fp1);

            while(!feof(fp2))
                {
                        ch = fgetc(fp2);
                        fputc(ch,fp3);
                }
            fclose(fp2);
            fclose(fp3);
    }
    else
    {
        printf("合成失败!\n");
    }
}


我的也是,改了后缀名之后就打不开了