一、设计思路
执行编写的代码后,在命令行中根据输入的相关参数,将文件进行分割(s)/组合(c)。
二、流程图
三、代码与运行结果
#include#include int main(int argc,char* argv[]) { FILE *fplist; FILE *fpsource; FILE *fptarget; FILE *fpblock; char file_block_name[64]; int file_block_id; int i; long lblock; long lpos_cur; unsigned int size_r; char data; char *pchar; for(i=0;i0) { fwrite(&data,sizeof(char),1,fpblock); lpos_cur = ftell(fpsource); if(lpos_cur % lblock == 0) { fclose(fpblock); fputs(file_block_name,fplist); fputs("n",fplist); file_block_id++; sprintf(file_block_name,"%s.%02d",argv[3],file_block_id); fpblock = fopen(file_block_name,"wb"); } size_r = fread(&data,sizeof(char),1,fpsource); } if(fpblock) { fputs(file_block_name,fplist); fclose(fpblock); } fclose(fplist); fclose(fpsource); } if(argv[2][0] == 'c') { printf("进行文件组合程序.....n"); printf("组合文件列表为:%sn",argv[3]); printf("组合文件保存为:%sn",argv[4]); fptarget = fopen("miku.png","wb"); if(!fptarget) { printf("文件创建失败!"); exit(1); } fplist = fopen("demolist.txt","r"); pchar = fgets(file_block_name,64,fplist); while(pchar != NULL) { if(file_block_name[strlen(file_block_name)-1] == 'n') { file_block_name[strlen(file_block_name)-1] = ' '; } printf("%s",file_block_name); fpsource = fopen(file_block_name,"rb"); if(!fpsource) { printf("打开文件%s失败n",file_block_name); exit(1); } size_r = fread(&data,sizeof(char),1,fpsource); while(size_r > 0) { fwrite(&data,sizeof(char),1,fptarget); size_r = fread(&data,sizeof(char),1,fpsource); } fclose(fpsource); pchar = fgets(file_block_name,64,fplist); } fclose(fptarget); } return 0; }
文件分割:
cmd命令切换到程序的目录,再输入“filecs -t s demo.png 102400 demolist.txt”命令对demo.png图像文件进行分割。
执行分割后:
文件组合:
cmd命令切换到程序的目录,再输入“filecs -t c demolist.txt miku.png”命令读取demolist文本文件中文件名中数据组合生成新的文件miku.png。
执行组合后:



