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

  FORUM HardWare.fr
  Programmation
  C++

  Void Main(int argc) comment gerér les arguments?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Void Main(int argc) comment gerér les arguments?

n°307438
AGA
La boîte à Bokeh!
Posté le 12-02-2003 à 13:54:07  profilanswer
 

salut je ne comprends pas bien le passage d'argument pour la fction main
 
void main(int argc, char* argv)
{
 
 
}
 
? je voudrais passer un paramètre à mon appli (ligne de commande)
 
comment recupéré le paramètre passé ou les params?
 
merci :)

mood
Publicité
Posté le 12-02-2003 à 13:54:07  profilanswer
 

n°307442
western
AJMM
Posté le 12-02-2003 à 13:59:00  profilanswer
 

Code :
  1. int main(int argc, char ** argv)
  2. {
  3.   //argv[0] est le nom de la programme
  4.   //argv[1] est le premier argument passé au programme
  5.   // ...
  6.   //argv[n] est le n-ième argument passé au programme
  7. }

n°307522
Carbon_14
Posté le 12-02-2003 à 14:58:28  profilanswer
 

Et argc le nombre de param, le nom de l'exe étant contenu dans argv[0] (donc argc >= 1).

n°307675
AGA
La boîte à Bokeh!
Posté le 12-02-2003 à 16:59:30  profilanswer
 

pourquoi char * * :whistle:

n°307676
MagicBuzz
Posté le 12-02-2003 à 17:00:47  profilanswer
 

c'est un pointeur sur un tableau de chaîne, dont un pointeur sur un tableau de tableau de char


Message édité par MagicBuzz le 12-02-2003 à 17:01:19
n°307756
leneuf22
Posté le 12-02-2003 à 17:48:20  profilanswer
 

En gros, si un char* peut "contenir" une chaîne, un char** peut en "contenir" plusieurs.
 
(Tu peux remplacer "contenir" par "pointer vers", c'est plus coule :) )

n°307774
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 12-02-2003 à 17:54:52  profilanswer
 

AGA > achète un bouquin et potasse, c'est le b-a ba ça franchement... :pfff:


---------------
J'ai un string dans l'array (Paris Hilton)
n°307904
AGA
La boîte à Bokeh!
Posté le 12-02-2003 à 20:58:52  profilanswer
 

Harkonnen a écrit :

AGA > achète un bouquin et potasse, c'est le b-a ba ça franchement... :pfff:


ouaip, j'ai acheté un truc sur Visual C++ :/
alors que les MFC ou truc dans le genre  :o
 
je vais chercher un book mieux ciblé. :jap:  

n°308131
AGA
La boîte à Bokeh!
Posté le 13-02-2003 à 09:35:38  profilanswer
 

:cry:  
 
j'ai un socket il a donc besoin d'une IP:

Citation :

sin.sin_addr.s_addr   = inet_addr("192.168.0.10" );


 
mais si je mets  
inet_addr(argv[1])
il veut pas :/
 

Code :
  1. Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
  2. getconf.cpp:
  3. Error E2034 getconf.cpp 41: Cannot convert 'char * *' to 'const char *' in function main(int,char * * *)
  4. Error E2342 getconf.cpp 41: Type mismatch in parameter 'cp' (wanted 'const char *', got 'char * *') in function main(int,char * * *)
  5. *** 2 errors in Compile ***


 
 :sweat:  
 
OK les pointeurs de bases c'est pas hypra difficile à comprendre, mais là :/

n°308144
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-02-2003 à 09:48:48  profilanswer
 

argv[1] est un pointeur ! si tu veux récupérer la chaine, tu dois saisir *(argv[1])
 
c'est pas propre du tout mais bon.... :/

mood
Publicité
Posté le 13-02-2003 à 09:48:48  profilanswer
 

n°308146
lorill
Posté le 13-02-2003 à 09:50:06  profilanswer
 

Harkonnen a écrit :

argv[1] est un pointeur ! si tu veux récupérer la chaine, tu dois saisir *(argv[1])


 :heink: la tu récupere juste le premier char...
 
nan, le probleme, c'est que char ** truc != char *** brol

n°308150
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-02-2003 à 10:02:28  profilanswer
 

lorill a écrit :


 :heink: la tu récupere juste le premier char...


euh, oui merde ! ça m'apprendra à répondre en 10 secondes entre 2 réunions :/

n°308152
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-02-2003 à 10:09:31  profilanswer
 

lorill > mais j'ai raison en + !! j'ai fait un test rapide qui fonctionne nickel !!
 

Code :
  1. #include <iostream.h>
  2. int main( int argc, char* argv[] ) {
  3.    cout << "Le nom du programme est : " << argv[0] << endl;
  4.  
  5.    cout << "Tu as saisi " << argc-1 << " arguments" << endl;
  6.    for ( int i = 1; i < argc; ++i ) {
  7.       cout << argv[i] << endl;
  8.    }
  9.    return 0;
  10. }


 
ça marche nickel ! c'est qu'il me ferait douter en + !!
 
edit: ah ben non effectivement, c'est moi qui me suis loupé sur mon précédent post :whistle:


Message édité par Harkonnen le 13-02-2003 à 10:13:25
n°308153
lorill
Posté le 13-02-2003 à 10:11:52  profilanswer
 

Harkonnen a écrit :

lorill > mais j'ai raison en + !! j'ai fait un test rapide qui fonctionne nickel !!
ça marche nickel ! c'est qu'il me ferait douter en + !!


harko, reveille toi... la tu affiches les chaines, et tu prends argv[i], ce qui est parfaitement normal... Mais tu disais qu'il fallait mettre *(argv[i]), hors ce n'est pas ce que tu as mis dans ton test :o

n°308154
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-02-2003 à 10:14:21  profilanswer
 

je m'en suis rendu compte en meme temps que toi apparemment, j'ai édité :d

n°308793
AGA
La boîte à Bokeh!
Posté le 13-02-2003 à 21:06:11  profilanswer
 

leneuf22 a écrit :

En gros, si un char* peut "contenir" une chaîne, un char** peut en "contenir" plusieurs.
 
(Tu peux remplacer "contenir" par "pointer vers", c'est plus coule :) )


 
Dans l'exemple de Harkonen, il a mis char* et on peut avoir plusieurs arguments :/
le double * j'ai du mal  :sweat:

n°308795
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-02-2003 à 21:12:28  profilanswer
 

AGA a écrit :


 
Dans l'exemple de Harkonen, il a mis char* et on peut avoir plusieurs arguments :/
le double * j'ai du mal  :sweat:  


j'ai mis char *argv[]
ce qui signifie que je déclare un tableau de pointeurs. et chaque "case" de ce tableau contient un pointeur vers une chaine de caractères.
 
char **argv est identique à char* argv[]


---------------
J'ai un string dans l'array (Paris Hilton)
n°308821
AGA
La boîte à Bokeh!
Posté le 13-02-2003 à 21:30:32  profilanswer
 

Harkonnen a écrit :


j'ai mis char *argv[]
ce qui signifie que je déclare un tableau de pointeurs. et chaque "case" de ce tableau contient un pointeur vers une chaine de caractères.
 
char **argv est identique à char* argv[]


là c'est clair :jap:  
 
(comme un boolay j'ai du mettre char **arg[])
 
avec le tableau c'est clair .
 
Dans le cas de char **argv
comment manipulerais t'on?
 
merci bcp

n°308830
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-02-2003 à 21:41:30  profilanswer
 

AGA a écrit :


Dans le cas de char **argv
comment manipulerais t'on?


l'example que je t'ai donné plus haut fonctionne aussi avec **argv.
 
sinon, tu as aussi :

Code :
  1. #include <iostream.h>
  2.  
  3.   int main( int argc, char **argv) {
  4.    
  5.        cout << "Le nom du programme est : " << *argv++ << endl;
  6.        
  7.        cout << "Tu as saisi " << argc-1 << " arguments" << endl;
  8.    
  9.        for ( int i = 1; i < argc; ++i ) {
  10.             cout << *argv++ << endl;
  11.        }
  12.    
  13.        return 0;
  14.   }


---------------
J'ai un string dans l'array (Paris Hilton)
n°308859
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-02-2003 à 21:58:01  profilanswer
 

note pour Musaran & Taz : je sais très bien que le code ci-dessus est deprecated, mais déja qu'il en bave avec les arguments, qu'il apprenne déjà ça, les namespaces viendront après :d


---------------
J'ai un string dans l'array (Paris Hilton)
n°309267
AGA
La boîte à Bokeh!
Posté le 14-02-2003 à 13:35:59  profilanswer
 

Harkonnen a écrit :

note pour Musaran & Taz : je sais très bien que le code ci-dessus est deprecated, mais déja qu'il en bave avec les arguments, qu'il apprenne déjà ça, les namespaces viendront après :d


merci ;)
 
Oui après :o
 
heu... sinon maintenant?
 
Parceque du code perimé c'est :/
 
J'ose te demander la version UpToDate? :whistle:  
 
merci

n°309281
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 14-02-2003 à 13:49:23  profilanswer
 

AGA a écrit :


merci ;)
Oui après :o
heu... sinon maintenant?
Parceque du code perimé c'est :/
J'ose te demander la version UpToDate? :whistle:  
merci


Code :
  1. #include <iostream>
  2. using namespace std;
  3.  
  4.   int main(int argc, char **argv) {
  5.    
  6.        cout << "Le nom du programme est : " << *argv++ << endl;
  7.        
  8.        cout << "Tu as saisi " << argc-1 << " arguments" << endl;
  9.    
  10.        for ( int i = 1; i < argc; ++i ) {
  11.             cout << *argv++ << endl;
  12.        }
  13.    
  14.        return 0;
  15.   }


---------------
J'ai un string dans l'array (Paris Hilton)
n°309299
chrisbk
-
Posté le 14-02-2003 à 14:01:31  profilanswer
 

Citation :

*argv++


 
[:totoz]

n°309302
lorill
Posté le 14-02-2003 à 14:04:07  profilanswer
 

chrisbk a écrit :

Citation :

*argv++


[:totoz]


l'arithmétique sur les pointeurs, cai bon, mangez en  ;)

n°309306
chrisbk
-
Posté le 14-02-2003 à 14:05:38  profilanswer
 

lorill a écrit :


l'arithmétique sur les pointeurs, cai bon, mangez en  ;)  


 
j'ai horreur de ces combinaisons d'instructions :D
 
en plus pour ce qu'il fait, un argv[i] aurait tout aussi bien fait l'affaire, en etant tellement plus agréable a regarder  [:ddr555]

n°309308
lorill
Posté le 14-02-2003 à 14:07:06  profilanswer
 

chrisbk a écrit :


j'ai horreur de ces combinaisons d'instructions :D


moi je suis fan, surtout si on les mets dans des conditions un peu longues, le tout dans un for  :love:

n°309324
western
AJMM
Posté le 14-02-2003 à 14:18:33  profilanswer
 

j'ai beaucoup de mal à saisir l'utilité de l'arithmetique des pointeurs en C++ (en C, je suis antièrement d'accord mais C++ ...)

n°309328
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 14-02-2003 à 14:20:06  profilanswer
 

chrisbk a écrit :


 
j'ai horreur de ces combinaisons d'instructions :D
 
en plus pour ce qu'il fait, un argv[i] aurait tout aussi bien fait l'affaire, en etant tellement plus agréable a regarder  [:ddr555]
 


ben il a voulu la version avec **argv, je lui donne la version avec **argv [:sinclaire]

n°309337
AGA
La boîte à Bokeh!
Posté le 14-02-2003 à 14:23:42  profilanswer
 

d'un autre coté le char **argv c'est aussi ce qui est marqué dans le topic sur les declarations de Main (les biens, les moins biens , les périmées etc...) :o
mais moi j'aime mieux char *argv[] :whistle:

n°309338
chrisbk
-
Posté le 14-02-2003 à 14:24:40  profilanswer
 

lorill a écrit :


moi je suis fan, surtout si on les mets dans des conditions un peu longues, le tout dans un for  :love:  


 
avec des variables qui s'appelent gato, a, tmp, hein, avoue ? [:ddr555]
 

n°309344
lorill
Posté le 14-02-2003 à 14:26:36  profilanswer
 

chrisbk a écrit :


avec des variables qui s'appelent gato, a, tmp, hein, avoue ?  


mmh, presque ;)
plop, kikoo, coin, gerard, selon le moment  :whistle:

n°309756
Ded Jay
scratch
Posté le 14-02-2003 à 17:16:54  profilanswer
 

kler, moi ossi j'adore un bon go FOR bien chargé et bien lisible :)


---------------
kil fé bon programmer en c lieux
n°310168
Musaran
Cerveaulté
Posté le 15-02-2003 à 01:09:28  profilanswer
 

Code :
  1. const char *foo= "Le code peut être illisible, seul le résultat compte.\n", *bar= "\r\r\0-\0\nE\1p)R\35N\236\21\34\21I\6\2L\r\6I\1\3\1IU\1E\21\3I\30E\312\6\233\26\125\34\21\23\27E\23\33\4\22\30\0\0";
  2. for(;*foo;putchar(*foo++^*bar++)); //pour affichage ANSI

 :D


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°310212
Ded Jay
scratch
Posté le 15-02-2003 à 10:08:11  profilanswer
 

heu ... là c peut etre un peu tro barbare  :heink:


---------------
kil fé bon programmer en c lieux
n°310229
chrisbk
-
Posté le 15-02-2003 à 11:24:46  profilanswer
 

Musaran a écrit :

Code :
  1. const char *foo= "Le code peut être illisible, seul le résultat compte.\n", *bar= "\r\r\0-\0\nE\1p)R\35N\236\21\34\21I\6\2L\r\6I\1\3\1IU\1E\21\3I\30E\312\6\233\26\125\34\21\23\27E\23\33\4\22\30\0\0";
  2. for(;*foo;putchar(*foo++^*bar++)); //pour affichage ANSI

 :D


 
 
heureusement qu'il y a le commentaire pour qu'on comprenne bien ! [:dawa]

mood
Publicité
Posté le   profilanswer
 


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

  Void Main(int argc) comment gerér les arguments?

 

Sujets relatifs
Question Newbi --- pourquoi utilise t on argc ou argvPetit coup de main avec un parseError
gerer l'evenement mouseover[PHP] Gerer les news --> SQL ou fichier simple
comment gerer unfichier SVG dans une page en html[PHP] script pour gérer les ressources rwx ......urgence ...
<SELECT multiple name=truc> comment gérer la selection multiple[PHP] Arguments d'un if venant d'une variable
Exception in thread "main" java.lang.NoClassDefFoundError : firstThread[C]Un ptit coup de main sur pointeurs et fonction svp
Plus de sujets relatifs à : Void Main(int argc) comment gerér les arguments?


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