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

  FORUM HardWare.fr
  Programmation
  C

  lire une suite de nombre séparé par une tabulation dans un fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

lire une suite de nombre séparé par une tabulation dans un fichier

n°1945641
tabb
Posté le 29-11-2009 à 11:53:36  profilanswer
 

Salut,
Je rencontre un probleme pour lire une suite de nombre séparé par une tabulation dans un fichier.
Mon but est de rentrer chacun des ses nombre dans mon tableau line[].
J'ouvre donc mon fichier puis boucle sur la ligne que j'ai lu, mais je n'ai pas ce que je veux dans mon fichier.
Voici le morceau de code, cf commentaires :
 

Code :
  1. char *s, *d;
  2. int i;
  3. float line[1000];
  4. fgets(s, maxlen, file); // recupere ma ligne en question
  5. // contenu de s : 12(tabulation)5(tabulation)7
  6. // le mot tabulation n'est pas écrit, il n'y a dans cette ligne que des chiffres et des \t
  7. // j'ai essyé :
  8. for(i=0; i<strlen(s); i++)
  9.     sscanf(s, "%f\t", &line[i]);
  10. // contenu de line : les 7 premières cases (de 0 à 6) = 12. Ensuite vide.
  11. // je voudrais : line[0]=12, line[1]=5,line[2]=7
  12. }


 
En C pur.
Msrci pour votre aide.  :)

mood
Publicité
Posté le 29-11-2009 à 11:53:36  profilanswer
 

n°1945772
Joel F
Real men use unique_ptr
Posté le 30-11-2009 à 08:26:22  profilanswer
 

utilise strtok

n°1945809
tabb
Posté le 30-11-2009 à 11:12:36  profilanswer
 

Merci, ca ne marche pas très bien.. où je ne sais pas m'en servir. J'ai repris l'exemple de la doc :  
 

Code :
  1. void tokenize(char * line){
  2.   float * pch;
  3.   int i;
  4.   float tab[1000];
  5.   pch = strtok(line,"\t" );  // je decoupe ma ligne avec les \t
  6.   i=0;
  7.   while (pch != NULL){
  8.        fprintf(stdout,"%f\n",pch);  // ici ca m'affiche toujours 0.000
  9.        sprintf(&tab[i],"%f",pch);    // je veux stocker chaque élément dans mon tableau, mais idem 0.000
  10.        i++;
  11.        pch = strtok (NULL, "\t" );
  12.    }
  13. }


Je l'utilise mal ? Je ne sais pas.
Merci de votre aide !

n°1945812
Un Program​meur
Posté le 30-11-2009 à 11:26:58  profilanswer
 

C'est quoi le type de retour de strtok, c'est quoi le type attendu pour le premier parameter de sprintf, c'est quoi le type de pch, c'est quoi le type de tab?
 


---------------
The truth is rarely pure and never simple (Oscar Wilde)
n°1945826
tabb
Posté le 30-11-2009 à 11:58:23  profilanswer
 

line => char * (récupéré par fgets() )
strtok d'apres la doc retourne un pointeur vers le premier element trouvé,
pch => un pointeur de type float, c'est pourquoi j'ai mis %f dans mon sprintf/fprintf. Ca serait ca l'erreur ? Je ne dois pas mettre %f ? Mais que mettre à la place ?!

n°1945846
Joel F
Real men use unique_ptr
Posté le 30-11-2009 à 12:36:59  profilanswer
 

tabb a écrit :


strtok d'apres la doc retourne un pointeur vers le premier element trouvé,


 
oui donc un char* :o

n°1945938
tpierron
Posté le 30-11-2009 à 15:53:33  profilanswer
 

strtok ? Pourquoi pas tout simplement :
 

Code :
  1. int i;
  2. float line[1000];
  3. // contenu de s : 12(tabulation)5(tabulation)7
  4. // le mot tabulation n'est pas écrit, il n'y a dans cette ligne que des chiffres et des \t
  5. for (i=0; i < 1000 && fscanf(file, "%f", line + i) == 1; i++);


n°1945965
gilou
Modérateur
Modzilla
Posté le 30-11-2009 à 16:52:34  profilanswer
 

tabb a écrit :

line => char * (récupéré par fgets() )
strtok d'apres la doc retourne un pointeur vers le premier element trouvé,

On fait man strtok, et on a immédiatement la réponse;
char *strtok(char *str, const char *delim);
Si pour vous, char* et float*, c'est la même chose, vaut peut être mieux recommencer les cours de programmation à 0.
A+,


Message édité par gilou le 30-11-2009 à 16:54:38

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1946116
Pauline292
CoinCoin!
Posté le 01-12-2009 à 01:34:19  profilanswer
 

Pourquoi ne pas lire caractère par caractère et sauter les espaces?
Une tabulation n'est rien qu'un ensemble d'espaces.
 

n°1946138
Joel F
Real men use unique_ptr
Posté le 01-12-2009 à 08:31:02  profilanswer
 

non,une tabulation c'ets \t

mood
Publicité
Posté le 01-12-2009 à 08:31:02  profilanswer
 

n°1946163
tabb
Posté le 01-12-2009 à 09:42:17  profilanswer
 

char * fonctionne très bien avec un atof() ensuite.
Je ne sais pas pourquoi j'ai mis un float *  à vrai dire :??:  
Merci bien.


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

  lire une suite de nombre séparé par une tabulation dans un fichier

 

Sujets relatifs
Afficher un certain nombre de caractères dans une chaîne (S.O.S)Accès multiples à un fichier en C++ sous window
[VBA Excel] Changer la couleur suite a une formuletransfert de fichier, client serveur
HashCode pour verifier si deux fichiers sont identiques ?Renommer dossier et copier un fichier
problème de lecture d'un fichier texteProblème balises fichier swf
Remplacer une chaine multiple dans un fichierPositionnement par tabulation après pointage par <a> avec id dans ie8
Plus de sujets relatifs à : lire une suite de nombre séparé par une tabulation dans un fichier


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