//C语言 -- 文件操作 实现文件的分割与合并
#include <stdio.h>
//文件分割函数,执行成功返回1,否则返回0
int split(const char* src, const char *dest1, const char *dest2)
{
FILE *fin, *fout1, *fout2;//文件指针,分别指向源文件和两个分割文件
int ch;//整型
int ctl = 0;//控制变量
fin = fopen(src, "rb");//以读取和二进制的方式打开src所指定的文件
fout1 = fopen(dest1, "wb");//以写入和二进制的方式打开dest1所指定的文件
fout2 = fopen(dest2, "wb");
//判断以上三个文件是否正常打开
if(fin == NULL || fout1 == NULL || fout2 == NULL)
return 0;
while((ch = fgetc(fin)) != EOF)//fgetc 从文件当中获取一个字符 EOF end of file文件结尾
{
if(ctl = !ctl)
fputc(ch, fout1);
else
fputc(ch, fout2);
}
//关闭上面三个打开的文件
fclose(fin);
fclose(fout1);
fclose(fout2);
return 1;
}
//合并文件函数,执行成功返回1,否则返回0
int fuse(const char *dest, const char *src1, const char *src2)
{
FILE *fout, *fin1, *fin2;
int ch;
int ctl = 0;
fout = fopen(dest, "wb");
fin1 = fopen(src1, "rb");
fin2 = fopen(src2, "rb");
if(fout == NULL || fin1 == NULL || fin2 == NULL)
return 0;
while(1)
{
if(ctl = !ctl)
ch = fgetc(fin1);
else
ch = fgetc(fin2);
if(ch == EOF)
break;
else
fputc(ch, fout);
}
fclose(fout);
fclose(fin1);
fclose(fin2);
return 1;
}
int main()
{
//把一个文件分割成两个文件
const char * src = "2.webp";
const char * dest1 = "2_part1.dat";
const char * dest2 = "2_part2.dat";
//if(split(src, dest1, dest2))
//printf("分割完成!\n");
if(fuse("666.webp", dest1, dest2))
printf("合并完成!\n");
return 0;
}