Question à 2 sous

Question à 2 sous - C++ - Programmation

Marsh Posté le 11-02-2003 à 07:49:00    


argc ne se trouve nul part dans le prog,
 
pourquoi avoir introduit cet argument,
 
(main fait un execvp avec argv en parametre)
 
 
 
int main(int argc,char *argv[])
 
 
je ne comprend pas bien l'utilité du argc,  
 
si quelqu'un peut m'aider je colle le code.
 
merci

Reply

Marsh Posté le 11-02-2003 à 07:49:00   

Reply

Marsh Posté le 11-02-2003 à 08:30:08    

Edless a écrit :


je ne comprend pas bien l'utilité du argc,  


 
Parceque sans lui, tu n'as pas moyen de connaitre la taille du tableau passé en paramètre, et donc le nombre d''arguments


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 11-02-2003 à 08:35:46    

kadreg a écrit :


 
Parceque sans lui, tu n'as pas moyen de connaitre la taille du tableau passé en paramètre, et donc le nombre d''arguments


 
 
quel sera la commande pour lancer le programe...
 
simplement  
 
nomduprog argumentablo
 
ou
 
nomduprog     nb.d'argumentablo  argumentablo

Reply

Marsh Posté le 11-02-2003 à 08:47:35    

Edless a écrit :


nomduprog argumentablo


 
Parceque le mécanisme avec argc est un mécanisme général. Mon man execvp me dit : "Le tableau de pointeur [passé à execvp] doit se terminer par un pointeur NULL.", ce n'est pas obligatoirement le cas de argv lorsque tu démmarres un programme.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 11-02-2003 à 09:35:36    

kadreg a écrit :


 
Parceque le mécanisme avec argc est un mécanisme général. Mon man execvp me dit : "Le tableau de pointeur [passé à execvp] doit se terminer par un pointeur NULL.", ce n'est pas obligatoirement le cas de argv lorsque tu démmarres un programme.


 
mon man dit la mem chose...
 
expliqque moi le concept de argv svp. [:tuffgong]

Reply

Marsh Posté le 11-02-2003 à 13:37:08    

Dans une ligne de commande, on peut avoir qq chose comme
MonProg NomDeFichier -a2 -b3 -h4 TotoABobo.txt
 
On récupère dans MonProg le nombre d'arguments (à condition qu'ils soient séparés par espace) dans argc et "NomDeFichier" dans argv[0], "-a2" dans argv[1], "-b3" dans argv[2], "-h4" dans argv[3], et "TotoABobo.txt" dans argv[4]. Y a plus qu'à les exploiter si ce sont des options de ligne de commande prévus par le développeur.


Message édité par Carbon_14 le 11-02-2003 à 13:37:43
Reply

Marsh Posté le 12-02-2003 à 07:25:29    

est-ce des fonctions standard ou les noms des variables n'ont pas d'importance
 
ex : main(argc, argv[]) = main(arge, argj[])
 
Question 2
 
s'agit-il plutot de la positon, c'est-a-dire qu'avec un main, le nombre d'argument est automatiquement stocke dans une variable...
 
Comment fait-on dans le cas d'une fonction ordinaire pour verifier le nombre d'argument par exemeple...
 
 
Merci

Reply

Marsh Posté le 12-02-2003 à 08:50:42    

Pour ce que je disais plus haut, vu un autre topic, je dois être décalé, argv[0] devrait être le nom de l'exe => quand y en a, les arguments sont en argv[1], [2], ..
 
J'ai jamais essayé de remplacer argc et argv[] par autre noms, mais suis qu'amateur.  
Ca doit être pour aider à s'y retrouver quand on reprend le code d'un autre !!
 
Ca concerne les entrées de prog en commande DOS, si on a une fonction/procédure perso dans un prog, on se débrouille pour savoir ce qu'on passe comme variable tableau, sa taille, ... Si on passe un tableau de chaînes en argument, c'est à soi-même de se débrouiller pour prévoir un garde-fou, une borne, .. Genre copier et avoir un compteur de cases (genre "argc" ) et le tableau (genre "argv[]" ).

Reply

Sujets relatifs:

Leave a Replay

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