Genre de menu en c
Résolu
cabon.contact
Messages postés
66
Statut
Membre
-
cabon.contact Messages postés 66 Statut Membre -
cabon.contact Messages postés 66 Statut Membre -
Bonjour,
J'aimerais créer un sorte de micro-langage de programmation à titre éducatif, c'est à dire que j'aimerais qu'en écrivant dans une console la commande suivante : <input type="text"> cela affiche, "cela créer une zone de texte".
Je pensais passer par un Switch, mais j'aimerais remplacer case 0 (case 1,case 2..) par case <input type="text"> vous pensez que c'est possible ?
Merci d'avance !
J'aimerais créer un sorte de micro-langage de programmation à titre éducatif, c'est à dire que j'aimerais qu'en écrivant dans une console la commande suivante : <input type="text"> cela affiche, "cela créer une zone de texte".
Je pensais passer par un Switch, mais j'aimerais remplacer case 0 (case 1,case 2..) par case <input type="text"> vous pensez que c'est possible ?
Merci d'avance !
3 réponses
-
Salut, il faut une fonction qui renvoi une valeur à partir d'une comparaison de chaines de caractères comme là:
http://www.cppfrance.com/codes/SWITCH-STRINGS-CPLUSPLUS_39135.aspx
edit: ça revient a faire des if sauf qu'ils sont dans une boucle de la fonction et qu'il n'y a qu'a toucher la façon dont on appelle la fonction en rajoutant d'autre chaines de caractère en argument -
Non ce n'est pas possible.
Si tu souhaites créer un langage, je te conseille de passer par flex/yacc.
Sinon, faut que tu nous en dises plus sur ce que tu souahites faire. Pour comparer deux chaînes entre elle, tu peux utiliser strcmp().
-
Il me semblait bien,
je ne souhaite pas créer un langage mais plutôt un genre d'interpréteur interne au 'C'.
Par exemple l'utilisateur entre dans la console la commande "new.var" et cela va créer une variable.
Exemple :
const char newVar[20] = "new.var";
char input[20];
scanf("%c",&input);
if(input == newVar){
// instruction
}
J'ai été assez clair ? Merci de m'avoir répondu-
scanf("%c",&input);
"%c", c'est pour un char pas pour une chaîne de caractères.
if(input == newVar){
Ce n'est pas == qu'on utilise pour comparer deux chaînes de caractères mais strcmp() comme dit plus haut.
Ce qui donnerait :scanf("%19s",&input); if(strcmp(input, new.var) == 0) { /*instruction*/ }
Le mieux serait d'utiliser fgets() (au lieu de scanf()). -
-