-
Problème d'argument en C
Bonjour,
Alors, ça fait un moment que je bloque sur ce truc :
Imaginer que je veux lancer un programme en ligne de commande avec le syntaxe suivante:
client_ASR -parm=timout:1800ms#sos:1 -fichier=x.wav
-grammar=load_grammar:Essaie.grxml
voila ici il faut que je captre le -parm avec les élément qui sont dessus: timout=1800ms et sos=1 ensuite le -fichier=x.wav et load_grammar=Essaie.grxml
je sais que tout ça fait partie de la manipulation des chaines mais j'arrive pas à trouver la bonne solution :( sachant que ça va se faire au début du main :
int main (int argc, char **argv)
Avez vous une solution à me donner ?
-
Ce travaille est tout fait par ton interpréteur de commande, argc te donne le nombre de paramètres, et argv est un tableau de chaines de caractère contenant tous les paramètres.
Essaie des les afficher avec leur index, tu verras ce que ça donne
-
oui je sais très bien que dans argc je vais trouver la valeur 4
argv[0]=client_ASR
argv[1]=-parm=timout:1800ms#sos:1
argv[2]=-fichier=x.wav
argv[3]=-grammar=load_grammar:Essaie.grxml
mon problème réside que je dois traiter tout d'un seul coup, pour le argv[1] par exemple je dois vérifier que ça commencer par -param ensuite prendre la valeur timeout dans une chaine et la valuer 1800ms dans une autre. Ensuite je devrais voir s'il y a encore des paramètres à affecter et et cela et possible s'il y a le '#'. du coup une autre fois je dois chopper sos dans une chaine et la valeur 1 dans une autre.
et Ainsi de suite pour les autre argv[]
Pour ma part je trouve pas simple du tout :(
-
Bonjour,
Il existe au moins une bibliothèques qui aide à la lecture des paramètres : http://www.gnu.org/s/libc/manual/html_node/Getopt.html.
-
Hello,
En gros tu dois réaliser un parser de tes arguments si j'ai bien compris.:roll:
Mais quel est le problème ?
Tu n'arrives pas a récuperer les informations (timeout, 1800, sos) ?
Peux-tu nous montrer ton main ?
-
C'est du parsing, si ca peut t'aider: http://franckh.developpez.com/articles/c-ansi/parsing/, c'est depuis un fichier ici mais du parsing reste du parsing, faut juste choisir la bonne stratégie ;)