IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Récuperation des valeurs des arguments


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2011
    Messages : 14
    Par défaut Récuperation des valeurs des arguments
    salut

    voila j'aimerai savoir, comment dois-je faire pour récupérer les valeurs d'un argument.

    exemple commande ligne
    donc
    argument 1:donnee.txt
    argument 2: -c
    argument 3: 2
    argument 4: L

    mais si par exemple j'ai ./tp donnee.txt -c 0-2 L, comment récupérer l'argument 0-2, mais je veux récupérer en fait le 0 + 2

    et dans le contexte ./tp donnee.txt -c -0-2 L cela ferait une erreur -0-2 car ça commence par -

    on fait c est la partie ou je coince, avec une seul valeur c'est ok
    mais plusieurs hmmm, je ne comprends pas comment les lires

    des suggestions

  2. #2
    Membre actif
    Profil pro
    Ingénieur
    Inscrit en
    Avril 2013
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Avril 2013
    Messages : 77
    Par défaut
    Bonjour

    Le prototype de la fonction main est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int main(int argc, char **argv)
    argc est le nombre de paramètres
    argv est le tableau contenant les paramètres.

    Dans l'exemple que tu cites:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ./tp donnee.txt -c 0-2 L
    argc = 5
    argv[0] = "./tp"
    argv[1] = "donnee.txt"
    argv[2] = "-c"
    argv[3] = "0-2"
    argv[4] = "L"
    Les arguments sont sous forme de chaînes de caractères, donc tu peux très bien en extraire une partie.

    J'espère que ça répond à ta question.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2011
    Messages : 14
    Par défaut
    oui ça je suis au courant

    mais je n arrive pas à les extraire pour les utiliser

    par exemple j'aimerai bien faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if((strcmp(argv[2],"-L")==0) || (strcmp(argv[4],"-C")==0)){
     
       le code // ça ne marche pas
    }
    mais là je ne sais pas pourquoi, j'ai fait une boucle for
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(argc > 1){
    	 for(x=1; x<argc; x++){
            printf("argument numero %d: %s\n",x,argv[x]);
            if(x==2 && (strcmp(argv[2],"-c")==0)){
                  // code sa fonctionne mais je ne peut
           }
    pourquoi....

  4. #4
    Membre actif
    Profil pro
    Ingénieur
    Inscrit en
    Avril 2013
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Avril 2013
    Messages : 77
    Par défaut


    Alors, de mon côté, ceci fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    int main(int argc, char **argv)
    {
    	int i = 0;
    	printf("nb arg : %d\n",argc);
    	for(i=0;i<argc;i++)
    	{
    		printf("arg %d : %s\n",i,argv[i]);
    	}
     
    	if((strcmp(argv[1],"-L")==0) || (strcmp(argv[2],"-C")==0)){
    		i++;
    	}
    }
    en ayant ajouté comme argument : -L et -C.

    Donc je pense que ton problème est lié aux indices.
    Quand tu fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if((strcmp(argv[2],"-L")==0) || (strcmp(argv[4],"-C")==0))
    Il faut que tu t'assures qu'il y a bien au moins 5 arguments.

  5. #5
    Membre Expert Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 784
    Par défaut
    Citation Envoyé par alyma Voir le message

    Il faut que tu t'assures qu'il y a bien au moins 5 arguments.
    Oui, et il est dommage d'imposer
    1) un ordre aux arguments passés (en fixant les indices),
    2) un nombre d'arguments. Si on passe des arguments qui sont obligatoires, ce ne sont plus des arguments, autant les hardcoder dans le programme....

    Edgar.

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2011
    Messages : 14
    Par défaut
    ok
    mais se que je ne comprend pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ./tp donnee.txt -c 0-2 L
    argc = 5
    argv[0] = "./tp"
    argv[1] = "donnee.txt"
    argv[2] = "-c"
    argv[3] = "0-2"
    argv[4] = "L"
    comment je recupere le "0-2". en fait le 0 et le 2.

    je ne comprend pas parce que "0-2" et considerer comme un caractere dans le tableau non?
    je suis confu

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/03/2011, 03h07
  2. [hook] Récuperer les valeurs des touches clavier
    Par TylerKnoxx dans le forum Windows
    Réponses: 0
    Dernier message: 09/12/2008, 11h06
  3. Réponses: 5
    Dernier message: 15/06/2007, 11h58
  4. Comment passer des valeurs en arguments
    Par remi77 dans le forum Excel
    Réponses: 6
    Dernier message: 13/03/2007, 11h54
  5. VBA Excel , récuperer la valeur des options buttons
    Par morgan47 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/06/2006, 14h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo