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 :

Probleme avec les fichiers


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 220
    Points : 48
    Points
    48
    Par défaut Probleme avec les fichiers
    Bonjour

    Voila j'ai fait une procédure qui copie un fichier et qui ajoute +1 à chaque caractère du fichier, en le copiant dans un autre fichier.
    Seulement j'ai un problème c'est que à la fin du fichier il m'ajoute toujours 1 caractère en plus, alors qu'il n'est pas dans le fichier orignal.

    Cela m'arrive aussi quand je fais une copie intacte d'un fichier.

    Voici le 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
     
    void cryptage()
    {
     FILE *fichier=NULL;
     FILE *fichierCrypter=NULL;
     char caractere;
     
     fichier=fopen("ess.txt","r");
     
     
     if(fichier!=NULL)
        {
        fichierCrypter=fopen("crypter.txt","w");
        if(fichierCrypter!=NULL)
            {
               while(!feof(fichier))
               {
                fread(&caractere,sizeof(caractere),1,fichier);
                caractere++;
                fwrite(&caractere,sizeof(caractere),1,fichierCrypter);
               }
     
            }
            else
            {
             printf("Erreur sur fichierCrypter\n");
            }
        }
        else
        {
         printf("Erreur sur fichier\n");
        }
        fclose(fichier);
        fclose(fichierCrypter);
    }
    Merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Bonjour,
    1. Mauvaise utilisation de feof(). Tu dois lire tant que fread() n'échoue pas, et ne tester feof() qu'une fois que fread() a échoué.
    2. Attention: si tu veux pouvroi crypter n'importe quel fichier, tu dois faire une lecture et écriture binaire, pas texte: Ajoute la lettre "b" au second paramètre de fopen(), dans les deux appels.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 220
    Points : 48
    Points
    48
    Par défaut
    1.Excuse moi mais il y a un petit point que je ne comprend pas bien, c'est que si je lit jusqu'à ce que fread échoue, cela veux dire que je suis à la fin du fichier non? est si c'est le cas à quoi cela sert que je reteste que je suis bien à la fin?

    Est-ce que je peut avoir un petit exemple?

    2.Oui bien sur la je fais juste un petit essai sur les fichiers texte je connais pas trop tous ce qui est cryptage mais merci pour l'information.

    Merci

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 519
    Points
    41 519
    Par défaut
    En réponse à ta question 1: Ça sert à vérifier que fread() n'a pas échoué pour une autre raison (quelle qu'elle soit).

    En, clair, après que fread() échoue:
    1. si feof(), OK
    2. sinon, on gueule.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 220
    Points : 48
    Points
    48
    Par défaut
    Si j'ai bien compris ce que tu ma dit le code devrais donnais un truc dans le genre la. Il a l'air de fonctionner.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    while(fread(&caractere,sizeof(caractere),1,fichier)!=0)
               {
                   if (!feof(fichier))
                      {
                         caractere++;
                         fwrite(&caractere,sizeof(caractere),1,fichierCrypter);
                      }
               }

  6. #6
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    C'est une FAQ!
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Plutôt comme ça:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	while(fread(&caractere,sizeof(caractere),1,fichier)!=0)
    	{
    		caractere++;
    		fwrite(&caractere,sizeof(caractere),1,fichierCrypter);
    	}
    	if(!feof(fichier))
    	{
    		puts("Erreur en lecture: fread() s'est arrete avant la fin.");
    	}
    PS: Si tu fais tout caractère par caractère, tu peux remplacer avantageusement fread() et fwrite() par fgetc() et fputc(). Attention toutefois, fgetc() retourne un int.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 220
    Points : 48
    Points
    48
    Par défaut
    Merci bien pour toute c'est réponse.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme avec les fichier jar
    Par maind5or dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 14/05/2007, 14h50
  2. Probleme avec les fichiers XML
    Par fle7a dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 17/07/2006, 10h32
  3. Probleme avec les fichier openGL32.dll et glu32.dll
    Par gazzall17 dans le forum OpenGL
    Réponses: 4
    Dernier message: 16/03/2006, 12h10
  4. Probleme avec les fichier faire un copier coller
    Par mcdonald dans le forum Général Python
    Réponses: 4
    Dernier message: 29/01/2006, 13h38
  5. [VB.NET] Probleme avec les fichiers!!
    Par ludovic85 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 20/01/2005, 17h12

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