Traiter une chaine en c++

drnicholas001 Messages postés 37 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 21 avril 2007 - 22 oct. 2005 à 22:05
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 - 23 oct. 2005 à 00:06
Salut, je veux me faire un petit programme qui fonctionne en ligne de commande, donc lutilisateur écrit en mode console : solve(x-2=0, x) et le programme coupe sa pour voir qu'il faut qu'il execute la fonction solve, que la formule est x-2, que cest égal à 0 et que l'inconnu est x.

Mais voila, j'ai commencé mais j'ai vraiment de la difficulté, je ne sais même pas comment faire exactement une string (j'ai fait un char test[250] mais sa marche plus ou moins]. Pouvez-vous m'aider pour déclarer ma string et la découper?

3 réponses

cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
23 oct. 2005 à 00:03
C'est pas facile lol :)

Déja faut découpé les arguments :



Alors on suppose que la ligne de commande est ::

char szCommande[] = "x-2=0, x";



On va découper les 2 parties :



char szCommande[] = "x-2= 0,x";



char *PartieAvant, *PartieApres;

int iTaille = strlen(szCommande);

int iIndex = 0;



char *c = szCommande;



while(*c != ',')

{

iIndex++;

c++;

}



PartieAvant = ( char *)malloc(iIndex+1);

strncpy(PartieAvant, szCommande, iIndex);

PartieAvant[iIndex] = 0;



PartieApres = ( char *)malloc(iTaille-iIndex+1);

strncpy(PartieApres, szCommande + iIndex + 1, iTaille - iIndex);

PartieApres[iTaille-iIndex] = 0;



Voila tes chaines sont découpées :

PartieAvant : x-2=0

PartieApres : x



Maintenant bonne chance pour évaluer le tout lol

if(!Meilleur("Joky")) return ERREUR;
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
23 oct. 2005 à 00:04
Biensur à la fin ne pas oublier les free(PartieAvant) et free(PartieApres) qui accompagnent les malloc :)
if(!Meilleur("Joky")) return ERREUR;<
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
23 oct. 2005 à 00:06
Au faite ! C'est pas du C++ que j'té donné la, c'est du C mais bon :)

if(!Meilleur("Joky")) return ERREUR;<
0
Rejoignez-nous