Utilisation des arguments int argc et char *argv[]

Résolu
cs_christophedlr Messages postés 267 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 23 août 2023 - 15 mars 2007 à 18:12
Alexlok Messages postés 1 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 19 juin 2011 - 19 juin 2011 à 23:18
Bonjour à tous,

Je voudrais savoir comment faire pour tester si un argument de la ligne de commande est par exemple --help pour afficher l'aide par exemple.

Car j'ai essayé et je n'y arrive pas.

Merci d'avance pour votre aide.

8 réponses

rrk275 Messages postés 540 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 1 octobre 2007 2
15 mars 2007 à 19:25
Oula tu compare les chaînes de caractères avec un égal????
(bah forcement ca marchera pas..)

voila un code (qui marche )

#include <stdio.h>
#include <string.h>

int main(int argc,char **argv)
{

  for(int i=0;i<argc;i++)
    if(strcmp(argv[i],"--help")==0)
      printf("voila l'aide!\n");
  return 0;
}
3
Xenul Messages postés 35 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 28 octobre 2007
15 mars 2007 à 18:59
argv[0] c'est le nom du prog, par contre, avec du == il aime pas, va comprendre ....

int main(int argc, char *argv[]) {
    int i;

    for(i=1; i < argc; i++) {
        if (argv[i] = "--help") { printf("ok");break; }
    }

}
0
Xenul Messages postés 35 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 28 octobre 2007
15 mars 2007 à 19:01
C'est nimp ce que j'ai mis, il faut le == mais il aime po (avec le =, il fou --help dans argv[i], et affiche ok car il a réussi a le mettre dedans), bref ...
0
cs_christophedlr Messages postés 267 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 23 août 2023 5
15 mars 2007 à 19:05
Ca ne marche toujours pas grrrrrrr vais le frapper lol
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_christophedlr Messages postés 267 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 23 août 2023 5
15 mars 2007 à 20:15
Merci rrk275,

J'avais essayé au départ ce que tu me dit, mais j'avais pas mis le ==0 à la fin de la comparaison.

Maintenant cela fonctionne, merci de votre aide à tous.

Merci beaucoup, je vais enfin pouvoir faire mon programme ;)
0
cs_nico1610 Messages postés 395 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 19 juin 2009 1
19 juin 2009 à 09:35
Je déterre le sujet, mais mettre :

if(strcmp(argv[i],"--help")==0)

ou

if(strcmp(argv[i],"--help"))

ca reviens pas au même ?
0
cs_christophedlr Messages postés 267 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 23 août 2023 5
19 juin 2009 à 13:52
non car là ont renvoi 0 et non 1 si c'est égale.
En boolean, 0 c'est false donc faux et 1 c'est true donc vrais
Ici, ont indique vrai par un 0 donc c'est inversé, enfin c'est ce que j'ai compris.

Donc à priori tes obligé de faire ce test du résultat, qui donc si c'est bien égale à 0, rendra la condition vrai et donc le passage dans le if se fera.

Je sais pas si je suis très clair lol
0
Alexlok Messages postés 1 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 19 juin 2011
19 juin 2011 à 23:18
Dans ce cas, ça devrait suffire de mettre une négation, non ?
Si on écrit :

if(!strcmp(argv[i],"--help"))
0
Rejoignez-nous