probleme avec sscanf ...

probleme avec sscanf ... - C - Programmation

Marsh Posté le 26-05-2005 à 11:27:10    

bon mon code:
 

Code :
  1. void SetEnvir(int argc,char *argv[])
  2. {
  3.     static char enviProvi[10000];
  4.     static char *s = "ls";
  5.     FILE *EnviFicConfig;
  6.    
  7.     if (argc == 1)
  8.         EnviFicConfig = fopen("milieu.txt","rt" );
  9.     else
  10.         EnviFicConfig = fopen(argv[1],"rt" );
  11.    
  12.     if (EnviFicConfig == NULL)
  13.     {
  14.         fprintf(stderr,"lecture du fichier milieu a planté\n" );
  15.         fprintf(stderr,"Contenu du repertoire courant :\n" );
  16.         system(s);
  17.         exit(1);
  18.     }
  19.     fgets(enviProvi,6,EnviFicConfig);
  20.     sscanf(enviProvi,"%d",&nbpatch);
  21.     fgets(enviProvi,6,EnviFicConfig);
  22.     sscanf(enviProvi,"%d",&patchavecoeuf);
  23.     fgets(enviProvi,6,EnviFicConfig);   
  24.     sscanf(enviProvi,"%d",&dimension);
  25.    
  26.     int valeur;
  27.     for(int i = 0; i < dimension; i++) 
  28.     {
  29.         fgets(enviProvi,10000,EnviFicConfig);
  30.         fprintf(stderr,"\n" );
  31.         for(int j = 0; j < dimension; j++)
  32.         {
  33.             sscanf(enviProvi,"%d",&valeur);
  34.             fprintf(stderr,"%d ",valeur);
  35.             *(map + j * (dimension) + i) = valeur;
  36.         }
  37.     }   
  38.     fprintf(stderr,"%d %d %d\n ",nbpatch,patchavecoeuf,dimension);
  39.    
  40. }


 
 
quoi que je fasse il n'y a que des 0 dans valeur ...
 
 
edit: je m'etais trompé de code :D


Message édité par seldon1 le 26-05-2005 à 11:29:44
Reply

Marsh Posté le 26-05-2005 à 11:27:10   

Reply

Marsh Posté le 26-05-2005 à 11:43:17    

regarde les retour de fgets et sscanf. à quoi servent ces static ? que représente 6 ?

Reply

Marsh Posté le 26-05-2005 à 11:46:04    

Taz a écrit :

regarde les retour de fgets et sscanf. à quoi servent ces static ? que représente 6 ?


 
Ok jeregarde ca, tu peux oublier les static et les  6 ca correspond a des valeurs récupérées dans un fichier d'initialisation -> j'ai testé et ca fonctionne correctement . :)

Reply

Marsh Posté le 26-05-2005 à 13:02:24    

Taz a écrit :

regarde les retour de fgets et sscanf. à quoi servent ces static ? que représente 6 ?


Bon j'ai regardé les retours:
fgets me renvoie labonne chaine de caractere
et sscanf renvoie 1 (rien de plus normal ...)
 
et don toujours plein de zero...


Message édité par seldon1 le 26-05-2005 à 13:56:42
Reply

Marsh Posté le 26-05-2005 à 14:14:56    

enleves les 6 et les 1000
 
valeur vaut toujours 0 parce que tu parse la meme chaine dans la boucle, si les entiers sont sur la meme ligne utilises strtol ou construit ton format dynamiquement.

Reply

Marsh Posté le 26-05-2005 à 15:34:48    

skelter a écrit :

enleves les 6 et les 1000
 
valeur vaut toujours 0 parce que tu parse la meme chaine dans la boucle, si les entiers sont sur la meme ligne utilises strtol ou construit ton format dynamiquement.


 
Peux pas enlever les 5 et 10000... fgets a bien trois arguments ?

Reply

Marsh Posté le 26-05-2005 à 15:38:21    

sizeof enviProvi, pour eviter le depassement de tampon

Reply

Marsh Posté le 26-05-2005 à 15:40:50    

ok merci

Reply

Sujets relatifs:

Leave a Replay

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