2010-11-01 4 views
0

écrire un programme qui copie le contenu d'un fichier à un autre en c sur la plate-forme linux (ubuntu) ou créer un programme qui font des copies de fichiers dans ubuntucontenu Copies d'un fichier à un autre

+3

Cela ressemble à un devoir. Si c'est le cas, on fronce les sourcils sur ceux qui sont ici. Nous vous aiderons avec des questions spécifiques, mais nous n'allons pas le faire pour vous. Si ce n'est pas le cas, s'il vous plaît soyez un peu plus précis quant à votre question ... pas seulement "écrivez ceci pour moi s'il vous plaît". – Andy

+0

OK - J'ai fait ça ... maintenant quoi? Où avez-vous des problèmes avec votre tentative? –

Répondre

0

L'idée générale

  • Ouvrir un fichier en utilisant fopen
  • Ouvrir un second fichier fopen
  • Lire à partir du premier fichier en utilisant fread
  • Ecrire à la deuxième utilisation Fichier fwrite

  • Vous pouvez remplacer scanf pour fread et, pour fprintf fwrite si vous avez besoin d'écrire des données formated.

+1

Pour la copie de fichiers, vous ne remplacez pas scanf() et printf(), car les données ne sont pas formatées. –

+0

Dépend de ce que sont les spécificités de l'affectation mais c'est pourquoi je les mets en tant que substituts – rerun

0

Vous n'avez pas spécifié le langage de programmation à utiliser. Donc, je suppose que vous utilisez bash. Ecrivez un script qui utilise la commande cp et votre mission est résolue.

+2

"Écrire un programme qui copie le contenu d'un fichier à un autre ** dans c ** ...". La "question" (si vous voulez l'appeler comme ça) est aussi marquée avec C. – eldarerathis

+0

Mon erreur. Je ferai plus attention la prochaine fois. Et le "C" tag est assez étroit ;-) – darioo

+0

Je vais concéder celui-là. C'est un petit bougre sournois. – eldarerathis

1

Je voudrais examiner en utilisant la redirection et les tuyaux comme vous le feriez avec un Shell? cet exemple ci-dessous provient d'un shell que j'ai écrit, c'est spécifiquement la fonction de redirection. (>>) donc vous pourriez faire file1 >> file2 et copier le contenu d'un fichier à un autre. le

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

; // Écrire dans le fichier sont les parties importantes

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]); 
    } 
} 
Questions connexes