[C] chaine de caractere -> doubles
Résolu
francesco
-
kilian Messages postés 8732 Date d'inscription Statut Modérateur Dernière intervention -
kilian Messages postés 8732 Date d'inscription Statut Modérateur Dernière intervention -
bonjour,
Voila, je viens de faire un programme en c (avec l'api win32) qui m'ouvre un fichier puis qui le copie dans un buffer.
Le fichier ouvert est un fichier .txt qui est ecrit de la maniere suivante:
10
1.000003 (tab) 12.467332 (tab) 123.897654
12.009764 (tab) 23.887655 (tab) 123.784765
et ainsi de suite (en fait il ya autant de ligne que le premier nombre (ici 10).
Donc je copie cela dans un buffer sous la forme d'une chaine de caractere. C'est alors que vient mon probleme. Je voudrais extraire chaque nombre dans un autre objet (le premier est stocke dans un entier, jusque la ca marche avec sscanf(buffer,"%d",&n);)
Je n'arrive pas sauvegarder les autres. Je les voudrais bien sur sous la forme de double.
Merci d'avance
Voila, je viens de faire un programme en c (avec l'api win32) qui m'ouvre un fichier puis qui le copie dans un buffer.
Le fichier ouvert est un fichier .txt qui est ecrit de la maniere suivante:
10
1.000003 (tab) 12.467332 (tab) 123.897654
12.009764 (tab) 23.887655 (tab) 123.784765
et ainsi de suite (en fait il ya autant de ligne que le premier nombre (ici 10).
Donc je copie cela dans un buffer sous la forme d'une chaine de caractere. C'est alors que vient mon probleme. Je voudrais extraire chaque nombre dans un autre objet (le premier est stocke dans un entier, jusque la ca marche avec sscanf(buffer,"%d",&n);)
Je n'arrive pas sauvegarder les autres. Je les voudrais bien sur sous la forme de double.
Merci d'avance
A voir également:
- [C] chaine de caractere -> doubles
- Caractère ascii - Guide
- Caractère spéciaux - Guide
- Caractere speciaux - Guide
- Chaine tnt gratuite sur mobile - Guide
- Caractere vide - Guide
3 réponses
Tu n'as pas besoin de passer par un buffer tu peux utiliser directement fscanf et lire ligne par ligne. Enfin comme tu le sens. Dans ton cas pour lire trois doubles :
Bonne chance
double d1,d2,d3; if(sscanf(buffer,"%lf %lf %lf\n",&d1,&d2,&d3) == 3){ printf("d1 = %g\n",d1); printf("d2 = %G\n",d2); printf("d3 = %lf\n",d3); }else{ fprintf(stderr,"Fichier invalide\n"); }
Bonne chance
Au pire pour convertir une chaine en entier: double atof(char *)