Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1148 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Ecriture dans un fichier

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Ecriture dans un fichier

n°1276034
rabzouze
Posté le 02-01-2006 à 19:31:54  profilanswer
 

J' aimerais ecrire dans un fichier la lettre que j'iapu recuperer d'un arbre.
 
Voila le code

Code :
  1. void TraduireEnTexte(Arbre a,char *Fsource,char *Fdest)
  2. {
  3.     FILE *fTxt;
  4.     char c;
  5.     char ligne[100];
  6.     char morse[100];
  7.    
  8.     char lettre;
  9.     char *code;
  10.     int i;
  11. int j;
  12. FILE *FenTexte;
  13. /******************************/
  14. fTxt=fopen(Fsource,"r" );
  15. FenTexte=fopen(Fdest,"w" );
  16.    
  17.     if(fTxt==NULL) printf("Fichier existe pas\n" );
  18.     else
  19.     {
  20.           c=fgets(ligne,100,fTxt);
  21.           while(c!=NULL)
  22.           {
  23.               i=0;
  24.               while (ligne[i]!='\0')
  25.               {     
  26.                     j=0;
  27.                     while (ligne[i]!='$')
  28.                     {   
  29.                           morse[j]=ligne[i]; 
  30.                           printf("Boucle morse et ligne" );
  31.                           j++;
  32.                           i++;
  33.                     }
  34.                    i++;
  35.                  
  36.                    if (strcmp(morse," * " )==0)  fprintf(FenTexte," " );
  37.                    else
  38.                    {
  39.                                       int k;
  40.                        k=strlen(morse)+1;
  41.                        code=(char*) malloc(sizeof(char)*k);
  42.                        strcpy(code, morse);
  43.                        printf("Insere file" );
  44.                        lettre=ConvertirMorse(code, a);
  45.                        printf("\n %c",lettre);
  46.                        fprintf(FenTexte,"%c",lettre);
  47.                    }               
  48.               }
  49.               c=fgets(ligne,100,fTxt);
  50.               fprintf(FenTexte,"\n" );
  51.          }
  52.      }
  53.    fclose(fTxt);
  54.    fclose(FenTexte);
  55. }

mood
Publicité
Posté le 02-01-2006 à 19:31:54  profilanswer
 

n°1276093
Sve@r
Posté le 02-01-2006 à 21:47:32  profilanswer
 

Pfff... rarement vu code aussi immonde
1) tu testes l'ouverture de "fTxt" mais pas celui de "FenTexte"
2) tu fais un fclose de "fTxt" même s'il n'a pas été ouvert (à ce moment là, la variable vaut "NULL" )
3) tu fais un malloc sans faire de free et sans renvoyer la zone allouée qui sera donc perdue
4) tu recopies "morse" dans "code" sans réelle utilité apparente
5) la fonction appelante n'a aucun moyen de savoir que le fichier n'a pas été ouvert
6) tu mets trop de commentaires
 
Mis à part ces soucis, ton code est parfait. L'instruction "fprintf(FenTexte, " " ) écrit bien un espace dans ton fichier bien que l'instruction "fputc(' ', FenTexte)" fasse pareil mais en plus rapidement; et l'instruction "fprintf(FenTexte, "%c", lettre)" écrit bien la lettre voulue dans le fichier. Je vois pas de quoi tu te plains...

Message cité 1 fois
Message édité par Sve@r le 02-01-2006 à 21:56:21
n°1276588
rabzouze
Posté le 03-01-2006 à 21:14:24  profilanswer
 

Sve@r a écrit :

Pfff... rarement vu code aussi immonde
1) tu testes l'ouverture de "fTxt" mais pas celui de "FenTexte"
2) tu fais un fclose de "fTxt" même s'il n'a pas été ouvert (à ce moment là, la variable vaut "NULL" )
3) tu fais un malloc sans faire de free et sans renvoyer la zone allouée qui sera donc perdue
4) tu recopies "morse" dans "code" sans réelle utilité apparente
5) la fonction appelante n'a aucun moyen de savoir que le fichier n'a pas été ouvert
6) tu mets trop de commentaires
 
Mis à part ces soucis, ton code est parfait. L'instruction "fprintf(FenTexte, " " ) écrit bien un espace dans ton fichier bien que l'instruction "fputc(' ', FenTexte)" fasse pareil mais en plus rapidement; et l'instruction "fprintf(FenTexte, "%c", lettre)" écrit bien la lettre voulue dans le fichier. Je vois pas de quoi tu te plains...


 
AVec le code que voila ça fonctionne pourquoi ça ne marche pas avec celui de  dessus
Il ecrit dans le sens inverse(ecrit le code morse et non pas le texte)

Code :
  1. void TraduireEnMorse(Liste l,char *Fsource,char *Fdest)
  2. {
  3. /*****Travaile sur fichier code*///
  4. FILE *Fcode;
  5. char *c;
  6. char ligne[100];
  7. int i;
  8. char *recupMorse;
  9. /**********************************/
  10.  
  11.  
  12. /******Fichier convert****************/
  13. FILE *FenMorse;
  14. /******************************/
  15.  
  16. Fcode=fopen(Fsource,"r" );
  17. FenMorse=fopen(Fdest,"w" );
  18. if(Fcode==NULL) printf("Fichier existe pas\n" );
  19.     else
  20.     {
  21.         while((c=fgets(ligne,100,Fcode))!=NULL)
  22.         {
  23.    i=0;
  24.   // while((ligne[i]!='\0') && (i<strlen(ligne)))
  25.    while(ligne[i]!='\0')
  26.   {
  27.    if(ligne[i]==' ')
  28.    {
  29.     fprintf(FenMorse," * $" );  
  30.    }
  31.    else if (ligne[i]=='\n')
  32.    {
  33.     fprintf(FenMorse,"\n" );
  34.    }
  35.    else
  36.    {
  37.     recupMorse = RechercheMorseListe(ligne[i],l);
  38.     if (recupMorse==NULL)
  39.                     {
  40.                        printf("Cette lettre %c n'existe pas.",ligne[i]);
  41.                        fprintf(FenMorse,"ERR" );
  42.                     }
  43.     else fprintf(FenMorse,"%s$",recupMorse);  
  44.    }
  45.    i++;
  46.   }
  47.         }
  48.    }
  49.    fclose(Fcode);
  50.    fclose(FenMorse);
  51. }


 
C'est quasiment le même que l'autre


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Ecriture dans un fichier

 

Sujets relatifs
Problème d'écriture dans un fichier[php] probleme avec ecriture de fichier
probleme d ecriture dans un fichierProbleme d'écriture dans un fichier
[JAVA] Lecture/Ecriture dans un fichier texte.[java] ecriture dans un fichier
[c/c++] petit probleme d'ecriture dans un fichierécriture dans un fichier texte.
[VBA] Ecriture dans un fichier (binary)petit probleme d'ecriture dans un fichier
Plus de sujets relatifs à : Ecriture dans un fichier


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR