隐藏压缩文件于图片中(简单的文件合并)

本文介绍如何使用C语言编写一个程序,实现将两个文件(如图片、音频、文本等)合并为一个文件的功能。通过简单的代码示例,演示了如何在Windows环境下通过批处理脚本来完成这一任务,并解释了其工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在网上有一种东西叫做“图种”,好奇,于是搜索了相关资料,

其实就是把压缩文件简单的拼接到图片文件后面而已;

·windows批处理实现:

</pre><pre name="code" class="plain">@echo off
cd %~dp0
echo ================文件合并==================
echo.
echo 请把要合并的两个文件放和本程序放到同一目录下
echo.
set /p a=输入文件a的文件名(包括扩展名):
echo.
set /p b=输入文件b的文件名(包括扩展名):
echo.
set /p c=输入合并后的文件名(包括扩展名):
echo.
echo 开始合并!
copy /b %a%+%b% %c%
pause




            将以上代码复制到一个txt文档后,然后修改后缀名为.bat。然后双击运行它, 根据提示操作,但要注意一点,必须先输入图片的文件名,合并后的文件名必须是图片格式(和你用的那张图片的格式一样)。
            合并成功之后关闭窗口你会发现多出了一个图片文件 ,双击打开它是一张图片,但是如果你修改它的后缀名(扩展名)为rar(如果你打包的是zip则改为zip),再双击打开它,它变成了一个压缩文件
,如果你把后缀名改回来,它又变成了一张图片了。
            这个程序还能合成其他文件,比如 MP3 ,你可以把两首MP3合并为一首以此实现两首连续播放,你还可以用它来合并两个txt文档。 
            了解了它的工作原理,于是我用c语言写了一个小程序实现了同样的功能。
            以下是C语言源代码:
<pre name="code" class="cpp">#include<stdio.h>
int main()
{
FILE *file1;
FILE *file2;
FILE *save;
char a[30];
char b[30];
char s[30];
int ch;
printf("\n\n\t\t文件合并器\n");
printf("================================================\n\n");
printf(" 请将需要合并的两个文件放到和本软件相同的目录下 \n\n");
printf("================================================\n\n");
printf("输入文件a的文件名(包括扩展名):");
gets(a);
printf("输入文件b的文件名(包括扩展名):");
gets(b);
printf("输入合并后保存的文件名(包括扩展名):");
gets(s);
printf("\n开始合并。。。。\n");
if((file1=fopen(a,"rb"))==NULL){printf("\n%s打开失败!\n\n\a按任意键退出",a);getchar();return 0;}
if((file2=fopen(b,"rb"))==NULL){printf("\n%s打开失败!\n\n\a按任意键退出",b);getchar();return 0;}
if((save=fopen(s,"ab"))==NULL){printf("\n%s保存失败!\n\n\a按任意键退出",s);getchar();return 0;}

while(1){
fread(&ch,1,1,file1);
        if(feof(file1)!=0)break;
fwrite(&ch,1,1,save);
}
while(1){
fread(&ch,1,1,file2);
   if(feof(file2)!=0)break;
fwrite(&ch,1,1,save);

}
printf("\n\n合并成功!\a\n\n按任意键退出!");
getchar();
fclose(file1);
fclose(file2);
fclose(save);
return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值