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

Messages postés
257
Date d'inscription
samedi 3 janvier 2004
Dernière intervention
30 mai 2016
- - Dernière réponse : Alexlok
Messages postés
1
Date d'inscription
dimanche 19 juin 2011
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.
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
542
Date d'inscription
vendredi 25 juin 2004
Dernière intervention
1 octobre 2007
2
3
Merci
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;
}

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 117 internautes nous ont dit merci ce mois-ci

Commenter la réponse de rrk275
Messages postés
35
Date d'inscription
mardi 8 août 2006
Dernière intervention
28 octobre 2007
0
Merci
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; }
    }

}
Commenter la réponse de Xenul
Messages postés
35
Date d'inscription
mardi 8 août 2006
Dernière intervention
28 octobre 2007
0
Merci
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 ...
Commenter la réponse de Xenul
Messages postés
257
Date d'inscription
samedi 3 janvier 2004
Dernière intervention
30 mai 2016
4
0
Merci
Ca ne marche toujours pas grrrrrrr vais le frapper lol
Commenter la réponse de cs_christophedlr
Messages postés
257
Date d'inscription
samedi 3 janvier 2004
Dernière intervention
30 mai 2016
4
0
Merci
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 ;)
Commenter la réponse de cs_christophedlr
Messages postés
402
Date d'inscription
jeudi 26 août 2004
Dernière intervention
19 juin 2009
0
Merci
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 ?
Commenter la réponse de cs_nico1610
Messages postés
257
Date d'inscription
samedi 3 janvier 2004
Dernière intervention
30 mai 2016
4
0
Merci
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
Commenter la réponse de cs_christophedlr
Messages postés
1
Date d'inscription
dimanche 19 juin 2011
Dernière intervention
19 juin 2011
0
Merci
Dans ce cas, ça devrait suffire de mettre une négation, non ?
Si on écrit :

if(!strcmp(argv[i],"--help"))
Commenter la réponse de Alexlok

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.