社区网站建设平台,电商网站首页开发,网页制作三合一第二版,百度2022最新版本问题描述#xff1a;可以把文件分割成为若干部分存储#xff0c;并且每个文件的大小都是平均的#xff0c;也可以对把若干个文件整合到一个文件中#xff0c;实现对文件的合并。该程序主要分为菜单选择模块、文件分割模块、文件合并模块、计算文件大小模块。1.文件的分割示…问题描述可以把文件分割成为若干部分存储并且每个文件的大小都是平均的也可以对把若干个文件整合到一个文件中实现对文件的合并。该程序主要分为菜单选择模块、文件分割模块、文件合并模块、计算文件大小模块。1.文件的分割示例老学长找到一段小诗存放在a.txt文件中将其分割大小相等的两段分别存放在a1.txt和a2.txt文件中分割文件示例分割后文件示例2.合并文件示例老学长通过刚才的a1.txt和a2.txt俩文件合并到b.txt中:合并后的b1.txt ,如图模块概述1.菜单选择模块菜单选择模块功能便是对显示文件的合并和分割以及退出这三个选项当用户选择相应的选项后进入相应的操作对磁盘文件的分割选项此时会运行文件分割的程序对任何类型的文件进行等份分割处理。选中文件合并的选项是对磁盘文件进行整合处理此实文件可以对想要整合的文件进行合并整理。最后退出的选项则是结束整个程序。菜单显示的界面如下实现功能1.通过do-while循环当输入选项不是菜单中的选项时将重复输出菜单栏2.用if-else对菜单项进行选择判断do{printf(\n);printf( 请选择需要处理的文件选项 \n);printf(\n);printf( \n);printf( 1.分离文件 2.合并文件 3.退出 \n);printf( \n);printf(\n);printf(请输入以上选项:);scanf(%d,n);if(n1)divide123();/*分割文件*/elseif(n2)unite123();/*合并文件*/elseif(n3)exit(0);/*退出*/}while(n1||n3);3.文件分割模块文件分割模块中首先会提示需要用户待输入的文件路径以及待分割的磁盘文件的几份最后根据用户的输入要求把分割文件内容存放再的新文件路径中。如图所示(1)将文件分割为若干份存在磁盘上其中需要用户自己输入文件的路径和文件名称用二进制只读的方式判断文件是否打开成功。关建代码如下if((fp2fopen(name,rb))NULL){printf(\n文件路径错误,是否重新输入(Y/N):);getchar();cgetchar();if(cY||cy)goto lp1;elsemenu123();}(2)确定分割份数根据提示的输入份数调用sizefile()计算文件大小的函数计算出文件总的大小再除以需要分割的文件分数可以算出每份文件的大小。关建代码如下所示printf(\n需要将文件分割为几份:);lp2:scanf(%d,n);if(n1){ printf(\n抱歉,请输入正确的分割份数:); goto lp2;}elsesizefsizefile(fp2);//自定义计算文件大小函数ev_sizefsizef/n;其中sizefile()函数主要时计算文件的大小将文件平均分为若干份再平均分配存盘。在计算文件的大小时主要应用了测试文件流的技术使用feof()函数测试文件流指针是否到文件结尾通过fgetc()函数一个一个的读取文件字符并使用sizef整型变量对文件变量进行累加当到达文件指针结尾时跳出循环使用rewinfd()函数重新让文件指针指向文件开头,具体代码如下:int sizefile(fp)/*计算文件大小*/FILE *fp; /*定义文件类型指针*/{sizef0;while(!feof(fp)){ fgetc(fp);sizef; }rewind(fp);return sizef-1;}(3).调用分割文件中的dividefile()函数对文件进行分割存盘分别存放再自己根据提示设置的路径文件下关建代码如下代码如下dividefile(n);/*分割存盘*/dividefile()函数主要运用到了向磁盘文件写入函数和读取函数4.合并文件模块合并文件的过程中主要是将多个文件合并到将到一个文件中(文件的类型可以不同)根据提示输入输入待合并文件的路径运行效果图如下(1).合并文件时需要自己输入待合并文件的路径由于要向文件中写入数据因此要判断是否能用二进制只写的形式将文件打开成功。关键代码如下printf( \n\n请输入需要合并存放的文件中的路径为:);scanf(%s,name);if((fp1fopen(name,wb))NULL){printf(\n路径错误,是否重新输入(Y/N):);getchar();cgetchar();if(cY||cy)goto lp1;elsemenu123();}(2).调用unitefile123()函数确定将什么文件进行合并再将需要合并的文件也二进制读写的方式打开执行文件的读写操作主要代码如下do{lp1:printf(\n请输入想要合并的第%d个文件的路径:,i);scanf(%s,name);if((fp2fopen(name,rb))NULL){printf(\n输入的新文件位置有误,是否重新输入新文件的位置(Y/N):);if(getchar()Y||getchar()y)goto lp1;elsemenu123();}while(fread(buffer,1,1,fp2))fwrite(buffer,1,1,fp1);fclose(fp2);//光标文件printf(\n是否继续进行合并(Y/按下任意键): );getchar();cgetchar();}while(cy||cY);2.程序完整代码如下#include#include#include/**csdn学院*目的让代码见证成长(作为一个初学的菜鸟如*大家有发现错误欢迎指正)*运行软件CodeBlocks*作者:小臣小仁*完成日期:2020年7月12日*/#define SIZE 1024char buffer[SIZE];FILE *fp1,*fp2;double sizef,ev_sizef;void menu123(); /*主界面的选择菜单*/void divide123();/*分割文件*/void unite123();/*合并文件*/void unitefile123();/*合并文件*/void dividefile(int );/*分割文件*/int sizefile(fp)/*计算文件大小*/FILE *fp; /*定义文件类型指针*/{sizef0;while(!feof(fp)){ fgetc(fp);sizef; }rewind(fp);return sizef-1;}int main(){menu123();}void menu123() /*主界面的选择菜单*/{int n;/* clrscr();/*清除整个当前字符窗口并且把光标定位于左上角(1,1)处*/do{printf( \n);printf( 请选择需要处理的文件选项 \n);printf( \n);printf( \n);printf( 1.分离文件 2.合并文件 3.退出 \n);printf( \n);printf( \n);printf( 请输入以上选项:);scanf(%d,n);if(n1)divide123();/*分割文件*/elseif(n2)unite123();/*合并文件*/elseif(n3)exit(0);/*退出*/}while(n1||n3);}void unite123() /*合并文件*/{int n;char name[25],c;lp:lp1:printf( \n\n请输入需要合并存放的文件中的路径为:);scanf(%s,name);if((fp1fopen(name,wb))NULL){printf(\n路径错误,是否重新输入(Y/N):);getchar();cgetchar();if(cY||cy)goto lp1;elsemenu123();}unitefile123();printf(\n合并文件成功,是否继续合并其他文件(Y/N):);getchar();cgetchar();if(cY||cy)goto lp;elsemenu123();}void unitefile123() /*合并文件*/{int i1;char name[25],c;do{lp1:printf(\n请输入想要合并的第%d个文件的路径:,i);scanf(%s,name);if((fp2fopen(name,rb))NULL){printf(\n输入的文件路径有误,是否重新输入文件的位置(Y/N):);if(getchar()Y||getchar()y)goto lp1;elsemenu123();}while(fread(buffer,1,1,fp2))fwrite(buffer,1,1,fp1);fclose(fp2);//光标文件printf(\n是否继续进行合并(Y/按下任意键): );getchar();cgetchar();}while(cy||cY);fclose(fp1);}void divide123() /*分割文件*/{int n;char name[25],c;lp:lp1:printf(\n请输入待分离的文件的路径:);scanf(%s,name);if((fp2fopen(name,rb))NULL){printf(\n文件路径错误,是否重新输入(Y/N):);getchar();cgetchar();if(cY||cy)goto lp1;elsemenu123();}printf(\n需要将文件分割为几份:);lp2:scanf(%d,n);if(n1){ printf(\n抱歉,请输入正确的分割份数:); goto lp2;}elsesizefsizefile(fp2);ev_sizefsizef/n; /*被分割后每一个子文件的大小*/printf(\n该文件长度为%.0f字节,分割到每分文件大小为:%.0f 字节\n,sizef,ev_sizef);dividefile(n);/*分割存盘*/printf(\n分割成功,是否继续进行分割(Y/N)\n);getchar();cgetchar();printf(\n\n);if(cY||cy)goto lp;elsemenu123();}void dividefile(int n) /*分割文件*/{int i,d1;char name[25],*c;c(char*)malloc(sizeof(char));for(i0;i3.心得体会:在编写程序的时候学弟学妹们可以用来练练手老学长在敲代码时候可能多多少少有错哦当然如果你发现有什么错误的地方或者编写的不合理的地方还得多多指正一起进步嘛。希望有同学和我这个老学长一起开心的敲代码哈哈哈哈哈