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 :

message d'erreurs sur copie de fichier


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    dans ton cul
    Inscrit en
    Octobre 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : dans ton cul

    Informations forums :
    Inscription : Octobre 2005
    Messages : 38
    Points : 40
    Points
    40
    Par défaut message d'erreurs sur copie de fichier
    suite a ce code j'ai un message d'erreurs m'indiquant que la memoire ne peut pas etre written merci pour votre aide

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
     #include <stdio.h>
       #include <conio.h>
     #include <string.h>
     
     
     int copy(){
     char nsource[100];
     char ncopie[100];
     int fsource,fcopie,fin;
     char x;
     FILE*source;
     FILE*copie;
     printf("Le fichier a copier doit etre dans le meme repertoire que ce programme\n\n");
     printf("fichier a copier: ");
     scanf("%s",fsource);
     sprintf(nsource,"%s",fsource);
     source=fopen(nsource,"rb");
     //if(!source) {printf("le fichier n'existe pas"); exit(0);}
     printf("\n Nom de la copie: ");
     scanf("%s",fcopie);
     sprintf(ncopie,"%s",fcopie);
     copie=fopen(ncopie,"wb");
     while(feof(source)==0){
     x=getc(source);
     fputc(x,copie);
     }
     fclose(source);
     fclose(copie);
     printf("Copie Termine\n");
     getch();
     return 0;
     }
     
     
     int suppr(){
     printf("Le fichier a supprimer doit etre dans le meme repertoire que ce programme\n\n");
     FILE*supr;
     char nsupr[60];
     int fsupr;
     printf("fichier a supprimer: ");
     scanf("%s",fsupr);
     sprintf(nsupr,"%s",fsupr);
     remove(nsupr);
     printf("suppresion termine\n");
     getch();
     return 0;
     }
     
     int main()
     {
     printf("\t\t1 -> Copie de fichiers\n\n");
     printf("\t\t2 -> Suprimer fichier\n\n");
     int choix=0;
     printf("Choix: ");
     scanf("%d",&choix);
     if (choix==1) copy();
     if (choix==2) suppr();
     if (choix!=1 && choix!=2) printf("Choix incorrect");
    getch();
    return 0;
    }

  2. #2
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     char nsource[100];
     int fsource,fcopie,fin; 
    .... 
     scanf("%s",fsource);
    fsource n'est pas un tableau de caractères mais un int. Alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    scanf("%d",&fsource)
    ou
    scanf("%s",nsource);
    et il y a un paquet d'erreurs de ce type dans le code
    Ceci étant, ce n'est pas très C++ ton truc

  3. #3
    Membre du Club
    Profil pro
    dans ton cul
    Inscrit en
    Octobre 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : dans ton cul

    Informations forums :
    Inscription : Octobre 2005
    Messages : 38
    Points : 40
    Points
    40
    Par défaut
    pourtant cela ne genere pas d'erreurs de compilation et la récupération s'effectue bien , mon probleme vient de la memoire qui ne peut etre "written" que cela signifie et comment y remedier merci a tous
    ???

  4. #4
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    pourtant cela ne genere pas d'erreurs de compilation
    Le compilateur ne peut absolument vérifier que le contenu du format est conforme au type de la variable pour scanf ( et printf) . Ceci est la responsabilité du programmeur. scanf étant une fonction difficile à utiliser en général, il faut TOUJOURS l'utiliser avec beaucoup d'attention à ce qu'on fait.
    scanf va écrire de toute façon à l'endroit indiqué par la variable suivant le format spécifié et ce sans états d'âme . Si la variable n'est pas du bon type , cela va écrire dans des zones non réservées ou écraser d'autres variables.
    Dans ton cas, tu spécifies %s et la fonction attend comme argument correspondant une adresse (un tableau) et tu mets la valeur d'un entier fsource qui n'est pas mais pas du tout une adresse légale
    Conclusion : plantage à l'exécution
    Solution : corriger tous ces scanf

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    ... Ou encore coder en C++

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    corriger aussi le coup du feof() qui ne doit être utilisé qu'APRÈS qu'une lecture ait échoué...

  7. #7
    Membre du Club
    Profil pro
    dans ton cul
    Inscrit en
    Octobre 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : dans ton cul

    Informations forums :
    Inscription : Octobre 2005
    Messages : 38
    Points : 40
    Points
    40
    Par défaut
    Auriez vous un exemple correct de code c++ pour la copie d'un fichier merci

  8. #8
    Membre du Club
    Profil pro
    dans ton cul
    Inscrit en
    Octobre 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : dans ton cul

    Informations forums :
    Inscription : Octobre 2005
    Messages : 38
    Points : 40
    Points
    40
    Par défaut
    j'ai trouver ca mais ne fonctionne pas il ne copie rien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    int copiefichier(char *dest, char *srce)
    // copie le fichier srce dans dest
    // renvoie 1 si ok, 0 sinon
    {
         ifstream fi(srce, ios::in|ios::binary);
         if (!fi) return 0;        // srce impossible à lire
         ofstream fo(dest, ios::out|ios::binary);
         if (!fo) return 0;
         char tampon;
         while ( fo && fi.get(tampon) )
               fo.put(tampon);
         return fo.good() && fi.eof();
    }

  9. #9
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Un truc genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void copierFichier (string source, string dest)
    {
        ifstream s(source.c_str(), ios_base::binary);
        if (!s)
            throw FileIOError("Souce file " + source + " not found for file copy");
            // Ou autre système de gestion de l'erreur
        ofstream d(dest.c_str(), ios_base::binary);
        if (!d)
            throw FileIOError("Destination file " + dest + " could not be opened for copy");
            // Ou autre système de gestion de l'erreur
        d << s.rdbuf();
    }

  10. #10
    Membre du Club
    Profil pro
    dans ton cul
    Inscrit en
    Octobre 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : dans ton cul

    Informations forums :
    Inscription : Octobre 2005
    Messages : 38
    Points : 40
    Points
    40
    Par défaut
    ouais mais avec tous le reste ci possible les includes merci

Discussions similaires

  1. Récupération erreur sur copie de fichier
    Par multimania dans le forum VB.NET
    Réponses: 3
    Dernier message: 23/10/2012, 16h25
  2. Réponses: 1
    Dernier message: 18/05/2010, 11h41
  3. Réponses: 1
    Dernier message: 29/12/2006, 20h12
  4. message d'erreur sur test module
    Par Daniel MOREAU dans le forum Access
    Réponses: 5
    Dernier message: 23/11/2005, 20h19
  5. [CR10] Pquoi absence du message d'erreur sur les Nulls ?
    Par speed034 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 30/11/2004, 15h30

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