Ecriture dans un fichier

Ecriture dans un fichier - C - Programmation

Marsh Posté le 18-01-2006 à 15:11:40    

Le problèem est que lorsque je tombe sur un saut de ligne "\n", normalement il devrait simplement m'ecrire dans le fichier "\n".
Mais il me fait le teste du caractere et me di que j'obtiens une erreur
 

Code :
  1. void TraduireEnMorse(Liste l,char *source,char *dest)
  2. {
  3. /*****Travaile sur fichier code*///
  4. FILE *Fsource;
  5. FILE *Fdest;
  6.  
  7.     char c[2]; // Recuperer caractere par caractere
  8.     char* morse; // Recuperer le code morse
  9. /**********************************/
  10.  
  11. Fsource=fopen(source,"r" );
  12. Fdest=fopen(dest,"w" );
  13. if(Fsource==NULL) printf("Fichier existe pas\n" ); // Teste existence du fichier
  14.     else
  15.     {
  16.         while(fgets(c, 2, Fsource) != NULL) // On extrait caractere par caratere  
  17.         {
  18.       if (c[0]==' ') fprintf(Fdest,"*" ); // Teste si espace
  19.       else if (c[0] == '\n') fprintf(Fdest,"\n" ); // Saut de ligne
  20.       else
  21.       {
  22.        morse = RechercheMorseListe(c[0],l);
  23.        if (morse==NULL)
  24.                 {
  25.                    printf("Erreur!!! Caractere incorrecte : %c\n",c[0]);
  26.                    fprintf(Fdest,"#" );//Signifie Erreur  
  27.                 }
  28.        else fprintf(Fdest,"%s$",morse);  
  29.          }
  30.         }
  31.    }
  32.    fclose(Fsource);
  33.    fclose(Fdest);
  34. }

Reply

Marsh Posté le 18-01-2006 à 15:11:40   

Reply

Marsh Posté le 18-01-2006 à 16:30:37    

Pour écrire des caractères dont le code Ascii est inférieur à celui de l'espace, il faut ouvrir le fichier avec le paramètre "b" (comme "binaire", par défaut, il est en mode "texte", "t" ):

Fdest=fopen(dest,"wb" );

Reply

Marsh Posté le 18-01-2006 à 16:36:19    

sous windows, les fichiers sont ouverts par défaut en mode "texte", ce qui implique que tout "\n" trouvé dans un fichier est converti en "\r\n", d'où ton caractère inattendu (cependant, je ne crois pas qu'il y aie de rapport avec les caractères de code inférieur à celui de l'espace, d'autant plus que, sur les tables qu'on utilise généralement, le \n a un code inférieur ...)

Reply

Marsh Posté le 18-01-2006 à 20:40:21    

rabzouze a écrit :

Le problèem est que lorsque je tombe sur un saut de ligne "\n", normalement il devrait simplement m'ecrire dans le fichier "\n".


En mode binaire ("wb" ) oui. Mais en mode texte ("w" ), c'est plus compliqué que ça. Ca dépend du système.
 
http://mapage.noos.fr/emdel/notes.htm#fichiers


Message édité par Emmanuel Delahaye le 18-01-2006 à 20:40:40

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed