arguments passés en ligne de commande - C - Programmation
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[].
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...
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 ...
Marsh Posté le 23-12-2009 à 22:59:04
strtol, strtod, strtof !
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]
Marsh Posté le 24-12-2009 à 13:19:55
WiiDS a écrit : |
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.
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...