本来想一直看郝斌老师的《C语言》视频教程可是看到后面发现郝斌老师的一些知识点没讲,例如文件操作,我边看小甲鱼老师的c语言中文件操作的那一部分看了几节后小甲鱼老师教我们做了一个文件合成器,这个文件合成器的功能非常简单,就是将一个压缩文件存放在一张图片中。
原理:运用到了DOS命令中的copy命令的原理
目的将该文件夹中的2.rar文件和1.jpg文件一起保存在3.jpg文件中
原理解释:
1 打开windows自带的DOS系统
2选择合并文件的位置
3查看文件的类型
注: 会发现文件中有一个1.jpg文件和一个2.rar文件
在cmd命令行中查看1.jpg和2.rar:
首先在cmd命令行中输入D:找到文件的位置
然后输入dir显示D盘中的文件
显示D盘中的文件
在cmd命令行中查看copy命令:输入copy /?
执行copy命令 在命令行中输入:copy /b 1.jpg + 2.rar 3.jpg
观看图片会发现在文件夹中多了一个3.jpg文件且3.jpg的大小等于1.jpg+2.rar
将3.jpg修改成3.rar
打开3.rar后发现里面有1.jpg 和 2.rar
通过C语言中的文件操作也可以实现上述功能
主要用到了C语言中的文件读写函数
程序代码:
#include <stdio.h>
#include <stdlib.h>
void main()
{
printf("请输入合成文件的文件名和路径:\n");
char pic[10], txt[10], jpg[10];
printf("图片:");
scanf("%s",pic);
printf("文本:");
scanf("%s",txt);
printf("图片:");
scanf("%s",jpg);
FILE *fp_pic, *fp_txt, *fp_jpg;
fp_pic = fopen(pic,"rb");
fp_txt = fopen(txt,"rb");
fp_jpg = fopen(jpg,"wb");
if(NULL == fp_pic)
{
printf("不能打开图片文件%s!\n",pic);
exit(0);
}
if(NULL == fp_txt)
{
printf("不能打开文本文件%s!\n",txt);
exit(0);
}
if(NULL == fp_jpg)
{
printf("不能写入文件%s!\n",jpg);
exit(0);
}
char ch;
while(!feof(fp_pic))
{
ch = fgetc(fp_pic);
fputc(ch,fp_jpg);
}
fclose(fp_pic);
while(!feof(fp_txt))
{
ch = fgetc(fp_txt);
fputc(ch,fp_jpg);
}
fclose(fp_txt);
system("pause");
system("pause");
}
执行结果:
使用文件合成器:
使用文件合成器前:
使用后