您的位置:首页 > 其它

一个简单的文件合并工具

2016-01-28 14:45 453 查看
有些时候我们需要把两个文件合并到一起,比如一些片段,本身是被分割开了的,这时候就可以合并起来,网上也有这样的工具。

这里提供一个简单的源码:

int main(int argc, char* argv[])

{

 if (argc > 3)

 {

  FILE *test_exist = fopen(fopen(argv[argc-1], "rb");

  if (test_exist)

  {

   printf("out_file %s exists", argv[argc-1]);

   return 1;

  }

  bool success = true;

  FILE *out_file = fopen(argv[argc-1], "wb");

  int j;

  for (j = 0; j < argc-2; j += 1)

  {

   FILE *in_file = fopen(argv[1+j], "rb");

   if (!in_file)

   {

    success = false;

    printf("cannot open in_file %s", argv[1+j]);

    goto over;

   }

   char buf[4096];

   while (1)

   {

    size_t read = fread(buf, 1, 4096, in_file);

    if (read > 0)

    {

     fwrite(buf, 1, read, out_file);

     fflush(out_file);

    }

    else if (feof(in_file))

    {

     break;

    }

    else if (ferror(in_file))

    {

     successs = false;

     printf("an error occurs\n");

     goto over;

    }

    else

    {

    }

   }

   fclose(in_file);

   in_file = NULL;

  }

over:

  fclose(out_file);

  out_file = NULL;

  if (!success)

  {

   remove(argv[argc-1]);

   return 1;

  }

 }

 else

 {

  printf("usage: FileMerge.exe in_file1 in_file2 ... out_file\n");

 }

 return 0;

}

大致思想是这样的,先判断要合并的文件是否存在,如果存在,则提示不能合并。接下来以写的方式创建输出文件,从要合并的输入文件里一块块的读出数据,在写到输出文件。如果读的过程中发生错误,则整个合并失败,删除掉已写的文件。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: