rabzouze | 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 :
- void TraduireEnMorse(Liste l,char *Fsource,char *Fdest)
- {
- /*****Travaile sur fichier code*///
- FILE *Fcode;
- char *c;
- char ligne[100];
- int i;
- char *recupMorse;
- /**********************************/
-
-
- /******Fichier convert****************/
- FILE *FenMorse;
- /******************************/
-
- Fcode=fopen(Fsource,"r" );
- FenMorse=fopen(Fdest,"w" );
-
- if(Fcode==NULL) printf("Fichier existe pas\n" );
- else
- {
- while((c=fgets(ligne,100,Fcode))!=NULL)
- {
- i=0;
- // while((ligne[i]!='\0') && (i<strlen(ligne)))
- while(ligne[i]!='\0')
- {
- if(ligne[i]==' ')
- {
- fprintf(FenMorse," * $" );
- }
- else if (ligne[i]=='\n')
- {
- fprintf(FenMorse,"\n" );
- }
- else
- {
- recupMorse = RechercheMorseListe(ligne[i],l);
- if (recupMorse==NULL)
- {
- printf("Cette lettre %c n'existe pas.",ligne[i]);
- fprintf(FenMorse,"ERR" );
- }
- else fprintf(FenMorse,"%s$",recupMorse);
- }
- i++;
- }
- }
- }
- fclose(Fcode);
- fclose(FenMorse);
- }
|
C'est quasiment le même que l'autre |