arguments passés en ligne de commande

arguments passés en ligne de commande - C - Programmation

Marsh Posté le 23-12-2009 à 17:07:03    

Bonjour a tous,
Voila je bosse mes partielles et bloque sur un petit point...
 
Je suis sur un exo ou l'on doit réaliser une calculatrice, lors de l'execution, on passe les operations en chaine de caracteres ansi que les valeurs.
 
ex:
./calcul "+-" 2 3 4
retourne 1
 
La ou je bloque c'est a la récupération des arguments...  
 
ex: int main (int argc, char *argv[])  
en argv[1] il y aura la chaine de caracteres "+-", mais apres les 2 3 4  sont des nb, sans les "", de plus le nb d'arguments est variable...
 
En fait je ne vois pas quoi mettre dans la parenthese du main...  
Qqun aurait il un piste ? merci...

Reply

Marsh Posté le 23-12-2009 à 17:07:03   

Reply

Marsh Posté le 23-12-2009 à 17:15:47    

La parenthèse du main ne change pas. C'est toujours  

int main (int argc, char *argv[])  

Par contre le nombre d'arguments, argc, changera selon les situations, ainsi que le contenu des chaines pointées par *argv[].

Reply

Marsh Posté le 23-12-2009 à 17:29:21    

oui je comprend bien le coup du argc, c'est le argv qui me pose pb... puisque c'est un pointeur vers des caracteres, est ce que dans mon ex, argv[0]=calcul, argv[1]=+-, argv[2]=2, argv[3]=3 et argv[4]=4 ?
 
je me pose ces questions pour l'utilisation de tout ca par la suite...

Reply

Marsh Posté le 23-12-2009 à 17:47:17    

Tous tes argv sont des chaines de caractères qu'il faut que tu analyses ; le premier contient les operateurs donc tu dois l'analyser caractère par caractère; les autres sont normalement des nombres (entiers ou flottant) que tu convertira de "chaine de caractères" en nombre via des fonction style atoi() ou atof() (ou autre);
Je pense qu'en fonction du nombre d'operateur dans argv[1] tu dois aussi pouvoir deduire le nombre de "nombre" qui suit ...

Reply

Marsh Posté le 23-12-2009 à 22:59:04    

strtol, strtod, strtof !


Message édité par ptitchep le 23-12-2009 à 23:00:54

---------------
deluser --remove-home ptitchep
Reply

Marsh Posté le 24-12-2009 à 02:35:51    

breizhbugs a écrit :

Je pense qu'en fonction du nombre d'operateur dans argv[1] tu dois aussi pouvoir deduire le nombre de "nombre" qui suit ...


Dangereux. Mieux vaut se fier a la valeur de argc avec premier chiffre = argv[2] et dernier = argv[argc - 1]


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

Marsh Posté le 24-12-2009 à 13:19:55    

WiiDS a écrit :


Dangereux. Mieux vaut se fier a la valeur de argc avec premier chiffre = argv[2] et dernier = argv[argc - 1]


tout a fait, il vaut mieux se baser sur argc pour acceder a argv.  
Ce que je pensais exprimer, c'est juste qu'il y a un lien entre argc et le nombre d'operateurs dans argv[1] et que cela peut aussi servir d'indication en cas d'argument insuffisant en ligne de commande.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed