Utilisation des arguments int argc et char *argv[] [Résolu]

Signaler
Messages postés
256
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
30 mai 2016
-
Messages postés
1
Date d'inscription
dimanche 19 juin 2011
Statut
Membre
Dernière intervention
19 juin 2011
-
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

Messages postés
540
Date d'inscription
vendredi 25 juin 2004
Statut
Membre
Dernière intervention
1 octobre 2007
2
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;
}
Messages postés
35
Date d'inscription
mardi 8 août 2006
Statut
Membre
Dernière intervention
28 octobre 2007

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; }
    }

}
Messages postés
35
Date d'inscription
mardi 8 août 2006
Statut
Membre
Dernière intervention
28 octobre 2007

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 ...
Messages postés
256
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
30 mai 2016
4
Ca ne marche toujours pas grrrrrrr vais le frapper lol
Messages postés
256
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
30 mai 2016
4
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 ;)
Messages postés
395
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
19 juin 2009
1
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 ?
Messages postés
256
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
30 mai 2016
4
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
Messages postés
1
Date d'inscription
dimanche 19 juin 2011
Statut
Membre
Dernière intervention
19 juin 2011

Dans ce cas, ça devrait suffire de mettre une négation, non ?
Si on écrit :

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