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 :

Pointeur en argument d'un main [Débutant(e)]


Sujet :

C

  1. #1
    Membre éclairé Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Par défaut Pointeur en argument d'un main
    Bonjour,

    J'ai une question concernant un code source que j'essai de comprendre (je ne l'ai pas écris).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int main(int argc, char *argv[], char *envp[]) 
    {                                              
    ---
    ---
    }
    En fait dans ce PGM, plusieurs arguments sont attendu est stockés dans le tableau pointé par *argv[]
    Ma question porte sur la déclaration char *envp[], ce pointeur de tableau n'est jamais réutilisé dans le code contenu dans le main.
    A quoi cela peut il servir ? , sachant que le PGM attend de 1 à 7 arguments qui sont systématiquement mis dans argv[n]

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    envp est une extension non-standard populaire sous Unix. Il donne des infos sur l'environnement dans lequel le programme s'execute. S'il n'est pas utilise, tu peux revenir a une forme standard de main():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int main(int argc, char *argv[])

  3. #3
    Membre éclairé Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Par défaut
    Merci pour cette réponse claire et précise.
    En fait ce programme tourne sous z/OS 1.8 (mainframe IBM) mais un utilisant les UNIX SERVICES de MVS. Je suppose vu ta réponse que cette déclaration est nécessaire.......

  4. #4
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Citation Envoyé par SPACHFR
    Je suppose vu ta réponse que cette déclaration est nécessaire.......
    Oh non, elle n'est pas necessaire (elle rend meme le programme peu portable, puisque envp n'est pas POSIX.1).
    Si tu veux la garder par prudence mais enlever les avertissements du genre "envp n'est pas utilise", insere simplement un
    au debut de ton programme. Ca ne fait rien, mais ca montre au compilateur (et aux futurs lecteurs du code) que tu sais que cet argument ne sera pas utilise.

  5. #5
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par SPACHFR
    Ma question porte sur la déclaration char *envp[], ce pointeur de tableau
    Attention à la terminologie utilisée, c'est un tableau de pointeurs non l'inverse
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  6. #6
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Franck.H
    Attention à la terminologie utilisée, c'est un tableau de pointeurs non l'inverse
    envp est un pointeur vers pointeur vers char. L'utilisation de [] dans les arguments est trompeuse, ca indique des pointeurs.

  7. #7
    Membre éclairé Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Par défaut
    Promis, je ferai attention la prochaine fois....

  8. #8
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    envp est un pointeur vers pointeur vers char. L'utilisation de [] dans les arguments est trompeuse, ca indique des pointeurs.
    Oui exacte, d'ailleurs ce n'est pas pour rien que je met mon main avec arguments sous cette forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int main (int argc, char ** argv)
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

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

Discussions similaires

  1. des fichiers comme arguments dans le main
    Par adel.87 dans le forum Débuter
    Réponses: 1
    Dernier message: 27/12/2007, 14h42
  2. Réponses: 12
    Dernier message: 17/07/2007, 08h29
  3. Visual C++ express arguments à passer au main
    Par jeannemarion dans le forum Visual C++
    Réponses: 2
    Dernier message: 26/10/2006, 14h45
  4. passage de pointeur en arguments
    Par abelolive dans le forum C
    Réponses: 13
    Dernier message: 06/07/2006, 20h45
  5. passage d'argument à la procédure main ()
    Par Zazeglu dans le forum C
    Réponses: 5
    Dernier message: 01/09/2003, 19h59

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