|
|
|
|
Salut a tous?
j'ai dis un mini probleme , j'espere qu'il est mini mini tout rikiki, et maintenant a vous de voir:
en fait j'aimerais savoir comment faire pour transformer (convertir) une chaine de caractere en un tableau sachant que j'ai pas exemple des opperateurs (ou des caracteres non transformable)dans la chaine,
exemple:6*3e2+5
(bien sur je dois mettre des vides a la place des opperateurs ) mais comment faire ?!
je sais que je peux le faire avec la fonction atof , mais comment?!!!j'ai essaillé plein de trucs mais ça na marche pas! (je me suis surement tromper quelque part)
alors je vous dis merci d'avance, un grand MERCI a tous ceux qui pourront me repondre positivement,
@+
En t'inspirant de :
|
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(){
char *pointeur;
char *separateur = { "*-+/eE" }; // Le séparateur
char *buffer;
char *Chaine_Entrante="2.56e-8*3.14";
int nb_mot=1;
buffer = strdup ( Chaine_Entrante );
// premier appel,
pointeur = strtok( buffer, separateur );
printf ("Mot de la phrase numero : %d %s\n",nb_mot, pointeur);
while( pointeur != NULL )
{
// Cherche les autres separateur
pointeur = strtok( NULL, separateur );
if ( pointeur != NULL )
{
nb_mot++; // increment du nombre de mot
printf ("Mot de la phrase numero : %d %s\n",nb_mot, pointeur);
//faire le atof ici
}
}
getchar (); // pause en mode console
return 0 ;
} |
Répondre à mamiemando
|
Ton return 0 n'était pas dans le bon bloc. Après correction ça donne :
#include <stdio.h>
#include <string.h>
int main(){
double tab[255];
char *pointeur;
char *separateur = { "*-+/eE" }; // Le séparateur
char *buffer;
char *Chaine_Entrante="2.56e-8*3.14";
int nb_mot=0;
buffer = strdup ( Chaine_Entrante );
// premier appel,
pointeur = buffer;
pointeur = strtok(buffer,separateur);
if ( pointeur != NULL )
{
tab[nb_mot]=atof(pointeur);
++nb_mot; // increment du nombre de mot
printf ("Mot de la phrase numero : %d %s\n",nb_mot, pointeur);
}
while( pointeur != NULL )
{
// Cherche les autres separateur
pointeur = strtok( NULL, separateur );
if ( pointeur != NULL )
{
tab[nb_mot]=atof(pointeur);
++nb_mot; // increment du nombre de mot
printf ("Mot de la phrase numero : %d %s\n",nb_mot, pointeur);
}
}
return 0 ;
}
Le 1er élément est stocké dans la case 0, le second dans la case 1 etc... Pour bien faire tu peux mettre le bloc if(pointeur!=NULL){ ... } dans une fonction corrigeant nbmot et tab... Cf cours sur les pointeurs. @+ |