将内容从一个文件复制到另一个文件

时间:2010-11-01 14:00:25

标签: c command cp

在linux平台(ubuntu)上编写一个将内容从一个文件复制到另一个文件的程序或创建一个在ubuntu中复制文件的程序

3 个答案:

答案 0 :(得分:1)

我会像使用Shell一样使用重定向和管道吗?下面这个例子来自我写的shell,这是重定向函数。 (大于;&GT) 所以你可以做file1>> file2,它会将一个文件的内容复制到另一个文件。

open(file[0], O_RDWR | O_CREAT, 0666); and while ((count = read(0, &c, 1)) > 0)
          write(fd, &c, 1)

//写入文件是重要的部分

void redirect_cmd(char** cmd, char** file) {
  int fds[2]; // file descriptors
  int count;  // used for reading from stdout
  int fd;     // single file descriptor
  char c;     // used for writing and reading a character at a time
  pid_t pid;  // will hold process ID; used with fork()

  pipe(fds);


  if (fork() == 0) {
    fd = open(file[0], O_RDWR | O_CREAT, 0666);
    dup2(fds[0], 0);
    close(fds[1]);

    // Read from stdout
    while ((count = read(0, &c, 1)) > 0)
      write(fd, &c, 1); //Write to file

    exit(0);

  //Child1
  } else if ((pid = fork()) == 0) {
    dup2(fds[1], 1);

    //Close STDIN
    close(fds[0]);

    //Output contents
    execvp(cmd[0], cmd);
    perror("execvp failed");

  //Parent
  } else {
    waitpid(pid, NULL, 0);
    close(fds[0]);
    close(fds[1]);
  }
}

答案 1 :(得分:0)

一般IDEA

  • 使用fopen
  • 打开一个文件
  • 使用fopen打开第二个文件
  • 使用fread
  • 从第一个文件中读取
  • 使用fwrite

  • 写入第二个文件
  • 如果您需要编写格式化数据,可以将scanf替换为fread,将fprintf替换为fwrite。

答案 2 :(得分:0)

您没有指定必须使用的编程语言。所以,我假设你正在使用bash。编写一个使用cp命令的脚本,你的任务就解决了。