Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1371 connectés 

  FORUM HardWare.fr
  Programmation
  C

  arguments passés en ligne de commande

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

arguments passés en ligne de commande

n°1952840
n4su
Cultive son ignorance...
Posté le 23-12-2009 à 17:07:03  profilanswer
 

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...

mood
Publicité
Posté le 23-12-2009 à 17:07:03  profilanswer
 

n°1952852
olivthill
Posté le 23-12-2009 à 17:15:47  profilanswer
 

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[].

n°1952860
n4su
Cultive son ignorance...
Posté le 23-12-2009 à 17:29:21  profilanswer
 

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...

n°1952871
breizhbugs
Posté le 23-12-2009 à 17:47:17  profilanswer
 

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 ...

n°1952940
ptitchep
Posté le 23-12-2009 à 22:59:04  profilanswer
 

strtol, strtod, strtof !


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

---------------
deluser --remove-home ptitchep
n°1952954
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 24-12-2009 à 02:35:51  profilanswer
 

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
n°1953034
breizhbugs
Posté le 24-12-2009 à 13:19:55  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  arguments passés en ligne de commande

 

Sujets relatifs
test d'un retour de la commande for /f videProgrammer une impression en java (ac saut de ligne)
Bug Visual Basic : impossible de voir la ligne de l'erreurExecuter ou Concatener une commande sous Bat?
Internet Explorer : erreur de syntaxe ligne 4Suppression d'ancien fichier en PERL
saut de ligne dans une textboxProblème avec le commande update de svn sous netBeans
Commande VBS , pour savoir si l'imprimante existeCreation d'un CV en ligne en HTML
Plus de sujets relatifs à : arguments passés en ligne de commande


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR