IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Copie de fichier


Sujet :

C

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Points : 174
    Points
    174
    Par défaut Copie de fichier
    Bonjour,

    j'ai écrit un programme permettant de copier un fichier dans un autre.
    Le soucis que j'ai, c'est que la copie n'a pas lieu.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    #include <stdio.h>
    #include <stdlib.h>
     
    int copy(FILE *fdi, FILE *fdo)
    {
      char buf[BUFSIZ];
      unsigned int lus;
      lus = fwrite(buf, sizeof(char), BUFSIZ, fdi);
      if(fread(buf, lus, 1, fdo) != lus)
        return 1;
      return 0;
    }
     
    int main(int argc, char *argv[])
    {
      FILE *src, *dst;
      if(argc != 3)
        {
          fprintf(stderr,"Usage : test src dest\n");
          return EXIT_FAILURE;
        }
      if((src = fopen(argv[1],"r")) == NULL)
        {
          fprintf(stderr,"erreur ouverture du fichier\n");
          return EXIT_FAILURE;
        }
      if((dst = fopen(argv[2],"w")) == NULL)
        {
          fclose(src);
          fprintf(stderr,"erreur ouverture du fichier\n");
          return EXIT_FAILURE;
        }
      if(copy(src, dst) == 1)
        {
          fclose(src);
          fclose(dst);
          return EXIT_FAILURE;
        }
      fclose(src);
      fclose(dst);
      return EXIT_SUCCESS;
    }
    Si quelqu'un pouvait m'indiquer ce qui cloche ?

    Merci

  2. #2
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Premium
    j'ai écrit un programme permettant de copier un fichier dans un autre.
    Le soucis que j'ai, c'est que la copie n'a pas lieu.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     lus = fwrite(buf, sizeof(char), BUFSIZ, fdi);
      if(fread(buf, lus, 1, fdo) != lus)
    C'est sûr que si tu inverses fread() et fwrite(), ça va pas le faire... Pour s'en rendre compte, il suffisait d'afficher la valeur de 'lus'. Il faut apprendre à déboguer son code. Une erreur si simple ne mérite peut être pas un post sur un forum, surtout de la part d'un "membre éprouvé"... Un archi-débutant, OK...

    D'autre part, le code est bien sûr incomplet (il ne sait pas traiter les fichiers > BUFSIZ octets)

    Et je rappelle que sizeof(char) vaut 1 par définition...
    Pas de Wi-Fi à la maison : CPL

  3. #3
    Membre éprouvé
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Points : 977
    Points
    977
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    surtout de la part d'un "membre éprouvé"... Un archi-débutant, OK...
    Tu sais bien que le "grade" se mesure au nombre de post, pas à leur valeur...
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

  4. #4
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 44
    Points : 28
    Points
    28
    Par défaut mpl
    Je crois qu'il te serait beaucoup plus facile pour copier des 2fichiers d'utiliser une simple boucle for ou tu initialisera les 2 pointeurs qui seront bien sur tous les deux pointer sur les debuts de fichiers

    A mon humble avis ,c'est beaucoup plus simple et rapide.

  5. #5
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Citation Envoyé par mehdi.berra
    Je crois qu'il te serait beaucoup plus facile pour copier des 2fichiers d'utiliser une simple boucle for ou tu initialisera les 2 pointeurs qui seront bien sur tous les deux pointer sur les debuts de fichiers

    A mon humble avis ,c'est beaucoup plus simple et rapide.
    Ça veut dire quoi exactement ce que tu écris
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  6. #6
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 44
    Points : 28
    Points
    28
    Par défaut dououououcement
    Si tu comprend pas ce que je dis ,je ne peux malheuresement pour toi pas te faire de dessin

    Apres toi c'est toi l'expert confirmé pas moi

    Allez concentre toi et lis dououououcement ,mot apres mot,aaaaallez tu va y arriver,voioioioioioilaaaaa

  7. #7
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Citation Envoyé par Trap D
    Ça veut dire quoi exactement ce que tu écris
    J'allais poser la même question, mais tu m'as devancé
    [alkama] quelqu'un est allé voir la guerre des mondes?
    [@Chrisman] j'espère pour spielberg
    --- bashfr.org

  8. #8
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 44
    Points : 28
    Points
    28
    Par défaut bon le dessin
    Le mec veut copier un fichier dans un autre

    Ce que je propose est simple:
    une boucle for qui aura comme parametre les 2pointeurs,un pointeurs du 1er fichiers plein et l autre du fichier vide

    Le bloc de la boucle for contiendra un strcpy et il faudra mettre une boucle_while qui controlera la fin de copie du fichier

    C'est bon ou pas?????

  9. #9
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Ben par exemple j'ai pas compris s'il fallait initialiser les pointeurs dans la boucle ou à l'extérieur, j'ai une petite idée, mais un débutant, j'en doute un peu

    [edit] je vois pas ce que vient faire ici un strcpyn ni une boucle while pour contôler la fin de fichier [/edit]
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  10. #10
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    C'est sûr que si tu inverses fread() et fwrite(), ça va pas le faire...
    C'est vrai qu'en remettant tout ça à l'endroit, ça ne pourra qu'améliorer les chose

    Par ailleurs, je suis tombé là-dessus en cherchant autre chose tout à l'heure : FAQ C - Copier un fichier
    [alkama] quelqu'un est allé voir la guerre des mondes?
    [@Chrisman] j'espère pour spielberg
    --- bashfr.org

Discussions similaires

  1. Copie de fichier sur le bureau
    Par LoicH dans le forum C++Builder
    Réponses: 3
    Dernier message: 01/05/2005, 20h57
  2. [C#] Copie de fichier via l'API
    Par slyv dans le forum Windows Forms
    Réponses: 5
    Dernier message: 20/12/2004, 22h39
  3. [C#] Copie de fichier via l'API
    Par slyv dans le forum Windows
    Réponses: 5
    Dernier message: 20/12/2004, 22h35
  4. [Kylix] Copie de fichier...
    Par paty.olivier dans le forum EDI
    Réponses: 1
    Dernier message: 23/06/2004, 12h55
  5. Copie de fichier
    Par Bjorn dans le forum C
    Réponses: 4
    Dernier message: 11/06/2002, 15h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo