• 当前位置:首页>>C语言>>C语言编程实例>>合并文件程序
  • 合并文件程序
  •  /*** 文件合并 ***/

     /*** 
                   运行程序时,如果编绎成的可执行文件名为fadd.exe
                   则 命令行:例如 fadd file#nnn
          主意:输入" file#nnn " ,而不是 " file#nnn.001 " ***/
     /*** 当分快文件少于 32 块时,可以不用此程序,
            直接运行分割时生成的披拷贝文件即可 ***/

     #include<stdio.h>
     main(int argc,char **argv)
      {
       FILE *fp_read,*fp_write;
       int buffer=0,i,len,pc_fn=1;
       char *fn_in,fn_out[50],*p=".001",ch='#';
       if (argc==1)
        {
         printf ("\n ERROR! you fogot enter the file name   ( file#nnn )\n");
         exit (0);
        }
       fn_in=argv[1];
       i=0;               /*** file#nnn ---> file.nnn 得到目标文件名 ***/
       while (*(fn_in+i))
        {
         if (*(fn_in+i)=='#') *(fn_out+i)='.'; else *(fn_out+i)=*(fn_in+i); i++;
        }
       *(fn_out+i)='\0';
       strcat (fn_in,p); len=strlen (fn_in);  /*** file#nnn ---> file#nnn.01 ***/
       if ((fp_read=fopen (fn_in,"rb"))==NULL)   /*** 检测块文件是否存在***/
        { printf ("\n ERROR! the file \" %s \" not exsits\n",fn_in); exit (0); }

        /*** 检测目标文件是否已经存在。如果存在,交出"控制权" ***/

       if ((fp_write=fopen(fn_out,"rb"))!=NULL)
        {
         fclose (fp_write);
         printf ("\n OVERWR99vE the file \" %s \"  (Y/N)?",fn_out);
         while (ch!='N'&&ch!='n'&&ch!='Y'&&ch!='y')
          {
           ch=getche();
           if (ch=='Y'||ch=='y') break;
           if (ch=='N'||ch=='n') { printf ("\n"); exit (0); }
          }
         printf ("\n");
        }

        /*** 合并 ***/   /*** 第一个块文件已在前面检测时打开 ***/

       fp_write=fopen(fn_out,"wb");  /*** 建立目标文件 ***/
       while (fp_read)        /*** 块文件不能被打开 (不存在 ) 时,停下 ***/
        {
         fread (&buffer,1,1,fp_read);
         while (!feof(fp_read))
          {
           fwrite (&buffer,1,1,fp_write); fread (&buffer,1,1,fp_read);
          }
         fclose (fp_read);
         pc_fn++;
         if (pc_fn%10==0&&pc_fn%100!=0

    [1] [2] 下一页