文秘系统 粗略比划
Posted 旭日初扬
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文秘系统 粗略比划相关的知识,希望对你有一定的参考价值。
目录
一、菜单选择的实现
// 菜单模块
void meun(void)
unsigned int n;
do
printf("\\nplease choose you needful file:1.divide file 2.unite file 3.exit:\\n");
scanf("%d", &n);
if (n == 1)
printf("文件分割中,请稍后 \\n");
divide();
else if (n == 2)
printf("文件合并中,请稍后 \\n");
unite();
else if (n == 3)
printf("退出操作,请稍后 \\n");
exit(0);
else if (n > 3)
printf("输入出错!");
while (n > 1 && n < 4);
二、文件分割的实现
向控制台输入需要分割的文件路径及名字,再对输入的文件名字进行判断,看能否以二进制只读的方式将文件成功打开。若打不开则创建此文件
void diveide1(void)
// 向控制台输入需要分割的文件路径及名字,再对输入的文件名字进行判断,看能否以二进制只读的方式将文件成功打开。
printf("\\n please input divide file's postion:");
scanf("%s", name);
fp2 = fopen(name, "rb");
if (fp2 == NULL)
printf("\\n the postion is error,whether or not repeate input(Y/N):");
// 从键盘获取 一个字符的输入
c = getchar();
if (c == 'Y' || c == 'y')
goto lp1;
else
meun();
else
fp2 = fopen(name, "rb+(r+b)");
确定需要分割的份数,根据提示输入分割的份数,再根据分割的份数,调用计算文件大小的函数来输出文件的总大小和平均分割的每一份文件的大小。
// 确定需要分割成多少份,根据提示输入分割的份数,
// 在根据分割的份数,调用计算文件大小的函数来输出显示文件的总大小和平均分割的每一份文件的大小。
printf("\\n how many do you want to divide the file:\\n");
lp2:
scanf("将文件分割为:%d", &n);
if (n < 1)
printf("\\n sorry,please input right number:");
goto lp2;
else
sizef = sizefile(fp2);
ev_sizef = sizef/n;
printf("\\n the size:%.0f bite,when dividing every file about:%.0f bite", sizef, ev_sizef);
三、计算文件的大小
// 计数文件大小
int sizefile(FILE *fp)
unsigned int sizef;
sizef = 0;
while (!feof(fp)) // 测试文件流
fgetc(fp); // 读取字符串
sizef++; // 对字符个数进行累加
rewind(fp); // 使文件指针重新指向文件开头
return sizef - 1; // 返回文件的大小值
对文件分割存盘,分别存到自己根据提示设置的路径文件下。
/*
// n为传递参数,即文件被分割的份数
// 功能:向磁盘文件写入数据和读取数据
*/
void dividefile(int n)
int i, d = 1;
char name[100], c;
FILE *fp1, *fp2;
for (i = 0; i < n; i++)
lp1:
printf("\\n please input you want to dividing %d new file's postion:", i + 1);
scanf("%s", name);
fp1 = fopen(name, "wb");
if (fp1 == NULL)
printf("\\n you input the file position id error,whether or not input the new name(Y/N):");
if (getchar() == 'Y' || getchar() == 'y')
goto lp1;
else
fclose(fp1);
meun();
d = 1;
if (i != n)
while (d <= ev_sizef)
fputc(fgetc(fp2), fp1);
d++;
else
// 读取并显示数据
while (fread(c, 1, 1, fp2))
// 写入到数据文件
fwrite(c, 1, 1, fp1);
fclose(fp1);
//
解决bug
以上是关于文秘系统 粗略比划的主要内容,如果未能解决你的问题,请参考以下文章