il y a un @ en trop ........

il y a un @ en trop ........ - C++ - Programmation

Marsh Posté le 28-08-2002 à 11:31:39    

alors voila j ai des champs a aller chercher dans un fichier texte , les champs etant séparé par des points virgules
 
donc voici la procedure qui me permet de recupere les champs
 

Code :
  1. void getValeur(FILE *source,char *valeur)
  2. {
  3.     char lettre;
  4.     int i;
  5.     i=0;
  6.     while ((lettre=fgetc(source)) !=';')
  7.             {
  8.                 valeur[i]=lettre;
  9.                 i++;
  10.             }
  11. }


 
et a chaque champs a la fin se positionne un @

Reply

Marsh Posté le 28-08-2002 à 11:31:39   

Reply

Marsh Posté le 28-08-2002 à 11:33:29    

euh c koi la question ??

Reply

Marsh Posté le 28-08-2002 à 11:35:49    

Joel F a écrit a écrit :

euh c koi la question ??




 
ben avec la procedure je recupere donc un champs dans un tableau de caractere
 

Code :
  1. char champs[64]


 
et lorsque je l ecris dans un fichier
avec la procedure
 

Code :
  1. void setValeur(FILE *resultat,char *valeur)
  2. {
  3.     fputs(valeur,resultat);
  4. }


 
dans le fichier qui me cree , le champs est bien ecris mais il rajoute un @ a la fin
je sais pas pq

Reply

Marsh Posté le 28-08-2002 à 11:38:57    

un @, un vrai, le caractere @ pas un truc non imprimable ???

Reply

Marsh Posté le 28-08-2002 à 11:39:43    

Joel F a écrit a écrit :

un @, un vrai, le caractere @ pas un truc non imprimable ???




 
????
koi comment ca , comment k on fé la différence ????

Reply

Marsh Posté le 28-08-2002 à 11:43:35    

Avec koi regarde tu tes ficheirs de sortie ?
Notepad ?
 
Bon laisse beton, euh ...
Tu fait qekchose de tes champs avant de les sauver ??
Style traitement particulier ?

Reply

Marsh Posté le 28-08-2002 à 11:50:32    

j utilise notepad pour regarder le fichier de sorti  et non je ne fais aucun traitenemnt particulier avec ....  
je stock j ecris
 
 

Code :
  1. #include <stdio.h>
  2. #include <string.h>
  3. char nom1[64]={0},nom2[64]={0},nom3[64]={0},c;
  4. FILE *fichier1,*fichier2,*fichier3;
  5. void ouverture(FILE **fichier,char *nom,char *attribut)
  6. {
  7. if ((*fichier = fopen(nom,attribut)) == NULL)
  8.         printf("ERREUR : impossible d'ouvrir le fichier %s .\n",nom);
  9.     else
  10.         printf("Fichier %s ouvert .\n",nom);
  11. }
  12. void espace(FILE *fichier,int vide)
  13. {
  14.     int i;
  15.     char c=' ';
  16.     for (i=1;i<=vide;i++)
  17.         fputc(c,fichier);
  18. }
  19. void getValeur(FILE *source,char *valeur)
  20. {
  21.     char lettre;
  22.     int i;
  23.     i=0;
  24.     while ((lettre=fgetc(source)) !=';')
  25.             {
  26.                 valeur[i]=lettre;
  27.                 i++;
  28.             }
  29. }
  30. void setValeur(FILE *resultat,char *valeur,int format)
  31. {
  32.     fputs(valeur,resultat);
  33.     espace(resultat,format-strlen(valeur));
  34. }
  35.        
  36. void constante(FILE *resultat,char *cons)
  37. {
  38.     fputs(cons,resultat);
  39. }
  40. void ligne(FILE *source1,FILE *source2,FILE *resultat)
  41. {
  42.     char var1[30],var2[30]={0};
  43.    
  44.     espace(resultat,7);                         //ANODOS//
  45.     constante(resultat,"10590" );                //ACNOCL//
  46.     getValeur(source1,var1);                   
  47.     setValeur(resultat,var1,20);                 //AREFCL//
  48.     constante(resultat,"11" );                    //ACAPDE//
  49.     getValeur(source1,var1);
  50.     setValeur(resultat,var1,30);                 //ANOMDE//
  51.     espace(resultat,30);                         //AENSEI//
  52.     getValeur(source2,var2);
  53.     setValeur(resultat,var2,30);                 //ANRUE1//
  54. }
  55.    
  56.          
  57. main()
  58. {
  59.     printf("Entrez le nom du fichier source :\n" );
  60.     scanf("%s",nom1);
  61.     ouverture(&fichier1,nom1,"r" );
  62.     printf("\n" );
  63.    
  64.     printf("Entrez le nom du fichier source :\n" );
  65.     scanf("%s",nom2);
  66.     ouverture(&fichier2,nom2,"r" );
  67.     printf("\n" );
  68.    
  69.     printf("Entrez le nom du fichier destination :\n" );
  70.     scanf("%s",nom3);
  71.     ouverture(&fichier3,nom3,"w" );
  72.    
  73.     ligne(fichier1,fichier2,fichier3);
  74.  
  75.      
  76. }


Message édité par Lenoiche le 28-08-2002 à 11:51:10
Reply

Marsh Posté le 28-08-2002 à 11:58:05    

Dans un premier temps tu pourrais peut-être essayer de mettre un  

Code :
  1. valeur[i] = '\0';

après ta boucle while...

Reply

Marsh Posté le 28-08-2002 à 12:00:30    

char var1[30],var2[30]={0};
Attention, je crois qu'en faisant ca, tu  n'initialises que var2!


Message édité par try58 le 28-08-2002 à 12:02:04

---------------
LOVE & PEACE !!! [:kirvel]
Reply

Marsh Posté le 28-08-2002 à 12:17:02    

BB138 a écrit a écrit :

Dans un premier temps tu pourrais peut-être essayer de mettre un  

Code :
  1. valeur[i] = '\0';

après ta boucle while...



$
 
ca marche capitaine
merci mocchieur
:jap:

Reply

Sujets relatifs:

Leave a Replay

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