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 :

appel fonction avec argument argv argv


Sujet :

C

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 277
    Points : 141
    Points
    141
    Par défaut appel fonction avec argument argv argv
    Bonjour,

    Je souhaiterais appeler une fonction qui prend comme argument d'entrée argc et argv (comme la fonction main)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int test(int argc, char *argv[])
    Je construis donc dans ma fonction principale les arguments argc et argv de la façon suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	int arg_c;
    	char arg_v[127];
    	char **pt_arg_v;	// Pointeur sur la chaine arg_v
    [...]
    				arg_c = 5;
    				sprintf(arg_v, "./hello %d %d %s %d", type, nb, nom, debug);
    Je me demande si l'argument arg_v est rempli correctement, effectivement j'ai fait un char *, or argv devrait être un char **

    Merci pour votre aide,

    Bat

  2. #2
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    En effet, tu obtiens ici une chaîne en lieu et place d'un tableau de chaînes. La question à te poser est : comment fais-tu pour aller chercher le n-ième argument avec ton système ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 277
    Points : 141
    Points
    141
    Par défaut
    Effectivement la chaine argv attend un char **.
    Pour info voici ce que j'ai fait et qui est fonctionnel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    				arg_c = 5;
    				// Remplir le tableau de char argv[argc]:
    				pt_arg_v = (char **) malloc (sizeof(char *) * arg_c);
    				for(ii = 0; ii < arg_c; ii++)
    				{
    					pt_arg_v[ii] = (char *) malloc ( sizeof(char) * 127 );
    				}
     
    				sprintf(pt_arg_v[0], "./hello ");				// Argument 0
    				sprintf(pt_arg_v[1], "%d ", type);			// Argument 1
    				sprintf(pt_arg_v[2], "%d ", nb);			// Argument 2
    				sprintf(pt_arg_v[3], "%s ", nom);// Argument 3
    				sprintf(pt_arg_v[4], "%d", debug);				// Argument 4
     
    			test(arg_c, pt_arg_v); // Rentre dans la fonction

+ Répondre à la discussion
Cette discussion est résolue.

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