2010-11-01 4 views
0

Напишите программу, которая копирует содержимое из одного файла в другой в с на платформе Linux (Ubuntu) или создать программу, которые делают копии файлов в убунтуКопирование содержимого из одного файла в другой

+3

Это звучит как домашнее задание. Если это так, мы хмуримся здесь. Мы поможем с конкретными вопросами, но мы не собираемся делать это за вас. Если это не так, пожалуйста, будьте немного более конкретны в отношении вашего вопроса ... не просто «напишите это мне, пожалуйста». – Andy

+0

ОК - Я сделал это ... теперь что? Где у вас проблемы с вашей попыткой? –

ответ

0

Генеральный IDEA

  • Открыть один файл, используя fopen
  • открыть второй файл с помощью FOPEN
  • Чтение из первого файла, используя fread
  • Пишите второй файл fwrite

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

+1

Для копирования файлов вы не будете подставлять scanf() и printf(), поскольку данные не отформатированы. –

+0

Зависит от того, каковы особенности назначения, но вот почему я помещаю их в качестве заменителей. – rerun

0

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

+2

«Напишите программу, которая копирует содержимое из одного файла в другой ** в c ** ...». «Вопрос» (если вы хотите это назвать) также помечен C. – eldarerathis

+0

Моя ошибка. В следующий раз я буду более осторожен. И тег «C» довольно узкий ;-) – darioo

+0

Я уступлю это. Это подлый маленький педераст. – eldarerathis

1

Я бы рассмотрел использование перенаправления и труб, как вы бы с Shell? этот пример ниже был из оболочки, которую я написал, это, в частности, функция перенаправления. (>>) , чтобы вы могли сделать 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]); 
    } 
}