
Envoyé par
lechewal
pour lancer des commandes a partir du term, je parse l'entrée dans un buffer et je fais des strcmp a la suite pour savoir a quelle commande sa correspond et quelle fonction lancée.
mais bon, j'ai une dizaine de commandes donc ca commence a etre moche..
<...>
autres techniques ??
tokeniser la commande sous la forme d'un tableau de pointeur sur char et d'un compteur de tokens : int argc, char **argv
forcer la commande (argv[0]) en minuscule.
chercher la commande dans un tableau dont les éléments contiennent :
- la commande en minuscules
- l'adresse de la fonction à appeler
Le prototype des fonctions est unique est évidemment (air connu)
int f (int argc, char **argv);
personellement, j'ajoute un contexte utilisateur, ça évite les immondes globales...
int f (int argc, char **argv, void *p_user);
appeler la fonction correspondante avec les paramètres qui vont bien.
Exemple d'implémentation (un peu 'avancé', désolé...)
http://emmanuel-delahaye.developpez.com/clib.htm
Module CI (Command Interpretor)
Partager