Копирует содержимое из одного файла в другой - PullRequest
0 голосов
/ 01 ноября 2010

Напишите программу, которая копирует содержимое из одного файла в другой в c на платформе Linux (Ubuntu) ИЛИ создайте программу, которая делает копии файлов в Ubuntu

Ответы [ 3 ]

1 голос
/ 01 ноября 2010

Я бы посмотрел на использование перенаправления и каналов, как вы бы с Shell?ниже приведен пример из оболочки, которую я написал, в частности, это функция перенаправления.(>>), чтобы вы могли сделать файл1 >> файл2, и он будет копировать содержимое одного файла в другой.

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]);
  }
}
0 голосов
/ 01 ноября 2010

Вы не указали, какой язык программирования должен использоваться.Итак, я предполагаю, что вы используете Bash.Напишите скрипт, который использует команду cp, и ваше задание будет решено.

0 голосов
/ 01 ноября 2010

Общая IDEA

  • Откройте один файл, используя fopen
  • Откройте второй файл, используя fopen
  • Считайте из первого файла используя fread
  • Запись во второй файл используется fwrite

  • Вы можете заменить scanf для fread и, fprintf для fwrite, если вам нужно записать форматированные данные.

...