/*文件的分割*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define NUM 1024 * 1024 * 100
int main()
{
        //所需分割的文件路径
	FILE *fr = fopen("F:\\PL.exe", "rb");
	if (fr == NULL)
	{
		exit(-1);
	}
	
	char *buff = (char*)malloc(sizeof(char) * NUM);
	if (buff == NULL)
	{
		exit(-2);
	}
	size_t rs = 0;
	FILE *fw;// = fopen("F:\\1.exe", "wb");

	//将分割的文件循环存放在目标路径下
	char str[100] = "F:\\";    
	char tmp_file[100];
	char name[100];
	int i = 1;
	
	while((rs  = fread(buff,sizeof(char),NUM, fr)) > 0)
	{
		// sprintf
		itoa(i,name,10);//    i->1-->name-->"1"
		strcpy(tmp_file, str);// tmp_file ->>"f:\\"
		strcat(tmp_file,name);//       f:\\1
		strcat(tmp_file, ".exe");
		
		fw = fopen(tmp_file, "wb");
		fwrite(buff,sizeof(char) ,rs, fw);
		fclose(fw);

		i++;
	}
	
	fclose(fr);	
	return 0;
}

/*文件的合并*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define NUM 1024*1024*100// 10MB
int main()
{
	FILE *fr1 = fopen("F:\\1.exe", "rb"); //分割后的文件路径
	FILE *fr2 = fopen("F:\\2.exe", "rb");
	FILE *fw = fopen("F:\\meger.exe", "wb");//文件合并后的目标路径
	
	char *buff = (char*)malloc(sizeof(char) * NUM);
	//
	size_t rs = 0;
	FILE *arr[] = {fr1,fr2};
	for (int i=0;i<2;i++)
	{
		while((rs = fread(buff,sizeof(char),NUM, arr[i])) > 0)
		{		
			fwrite(buff, sizeof(char), rs, fw);
		}
		
		fclose(arr[i]);
	}
	
	fclose(fw);
	free(buff);

	return 0;
}