论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > C语言程序设计教程
Tag:新手,函数,指针,数据类型,对象,Turbo,入门,运算符,数组,结构,二级,,tc,游戏,试题,问答,编译,视频教程

“文秘”系统

文章类别:C语言程序设计 | 发表日期:2008-9-24 14:43:08

   “文秘”这个词很诱人吧,我们在平时总会碰到这样的问题,我们要将自己喜欢的程序,文本,mp3等存盘,由于它们太大了,而无法实现,于是我遍了这个程序,它可以完成文件的分割,和并。你可以将文件分割成若干分,然后分别存盘,再将他们合并,我已经实验过了,它可以将任何文件分割,合并。合并时一定要按顺序合并,你只要填入被分割的子文件名按着提示做即可。这个程序最大的特点是他的添加性,这个程序的每个功能都由函数独立完成,各位有爱好的朋友可以继续添加它的功能,如 文件的加密等。

由于我用是汉字,所以你最好用ccdos运行它!~·!

#include<stdio.h>
#define SIZE 1024
char buff[SIZE];
 FILE *fpn,*fpo;
unsigned double sizef,ev_sizef;

main()
{
    begin();
}

begin()            /*主界面的选择菜单*/
{
    int n;
    clrscr();
    do
     {
         printf("\n请选择你需要的文件操作 1.分割文件 2.合并文件 3.退出系统 :");

    scanf("%d",&n);
         if(n==1)
         divid();
         else
         if(n==2)
         unite();
         else
         if(n==3)
         exit(0);
     }while(n<1||n>3);
}
unite()              /*合并文件*/
{
  int n;
  char name[25],c;
  lp:
  lp1:
  printf("\n请输入你要合并文件后生成的文件路径:");
  scanf("%s",name);
  if((fpn=fopen(name,"wb"))==NULL)
    {
     printf("\n你输入的文件路径有误,是否从新输入(Y/N):");
     getchar();
     c=getchar();
     if(c=='Y'||c=='y')
     goto lp1;
     else
     begin();;
     }
  unitefile();
  printf("\n文件合并成功,是否继续合并其它文件(Y/N)");
  getchar();
  c=getchar();
  if(c=='Y'||c=='y')
  goto lp;
  else
  begin();

}

unitefile()      /*合并文件*/
{
  int i=1;
  char name[25],c;
  do
    {
     lp1:
     printf("\n请输入你要合并的第%d个新文件的文件路径:",i);
     scanf("%s",name);
      if((fpo=fopen(name,"rb"))==NULL)
      {
        printf("\n你输入的文件路径有误,是否从新输入(Y/N):");
            if(getchar()=='Y'||getchar()=='y')
          goto lp1;
          else
           begin();
       }

        while(fread(c,1,1,fpo))
            fwrite(c,1,1,fpn);
      fclose(fpo);
      printf("\n是否继续合并(Y/其他键): ");
      getchar();
      c=getchar();

    }while(c=='y'||c=='Y');
  fclose(fpn);

}
divid()     /*分割文件*/
{

  int n;
  char name[25],c;
  lp:
  lp1:
  printf("\n请输入你要分割文件的文件路径:");
  scanf("%s",name);
  if((fpo=fopen(name,"rb"))==NULL)
    {
     printf("\n你输入的文件路径有误,是否从新输入(Y/N):");
     getchar();
     c=getchar();
     if(c=='Y'||c=='y')
     goto lp1;
     else
      begin();
     }

  printf("\n你要把分割文件分割成几份:");
  lp2:
  scanf("%d",&n);
  if(n<1)
  { printf("\n对不起,请输入正确的数"); goto lp2;}
  else
 sizef=sizefile(fpo);
   ev_sizef=sizef/n;                      /*被分割后每一个子文件的大小*/
  printf("\n文件大小为:%.0f字节,分割后每个文件大约为:%.0f字节",sizef,ev_sizef);
  dividefile(n);
  printf("\n文件分割成功,是否继续分割(Y/N)");
  getchar();
  c=getchar();
  if(c=='Y'||c=='y')
  goto lp;
  else
   begin();

}
int sizefile(fp)                             /*计算文件的大小*/
FILE *fp;
{

 sizef=0;
 while(!feof(fp))
  { fgetc(fp);
    sizef++;    }
  rewind(fp);
  return sizef-1;
}


dividefile(int n)      /*分割文件*/
{
  int i,d=1;
  char name[25],c;
  for(i=1;i<=n;i++)
   {
     lp1:
     printf("\n请输入分割后,生成的第%d个新文件的文件路径:",i);
     scanf("%s",name);
      if((fpn=fopen(name,"wb"))==NULL)
      {
        printf("\n你输入的文件路径有误,是否从新输入(Y/N):");
            if(getchar()=='Y'||getchar()=='y')
          goto lp1;
          else
          { fclose(fpo); begin();}
       }

       d=1;

     if(i!=n)
        while(d<=ev_sizef)
       { fputc(fgetc(fpo),fpn); d++;}
      else
        while(fread(c,1,1,fpo))
        {

          fwrite(c,1,1,fpn);
           }
     fclose(fpn);
    }

    fclose(fpo);
}



点这里下载
上一篇:{实例}行文本编辑器 人气:7571
下一篇:{实例}一个银行帐目治理程序 人气:6814
视频教程列表
文章教程搜索
 
C语言程序设计推荐教程
C语言程序设计热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058