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 :

C++ et ligne de commande


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5
    Par défaut C++ et ligne de commande
    Bonjour,

    J'ai une fonction main(int args, char *argv[]) qui analyse une ligne de commande. Je me demandais s'il était possible d'utiliser cette méthode sans ligne de commande... c'est à dire de créer la variable args et le tableau argv[], de les remplir, et de les passer en paramètre de cette méthode, qui ne serait plus un main mais une simple méthode avec des paramètres. Le problème c'est que je ne sais pas quoi mettre dans le tableau de char argv[], car apparemment, un char n'est composé que d'un charactère...

    Voici à quoi ressemble ma ligne de commande:
    findcscu -P -k 0008,0052=PATIENT -k 0010,0010 10.194.XXX.XXX 1115 -aec SAMBA_QR

    Quelqu'un a-t-il une idée??
    Merci d'avance!!!

  2. #2
    Invité
    Invité(e)
    Par défaut
    apparemment, les choses parraissent confusent pour toi. les parametres argc et argv sont des parametres basics, sauf que t'es dans un main... tu pourrais les appeler différemment, ou bien les dégager (par un void), cela ne changerait rien a ton main. de la meme facon, tu peux aussi les bouger comme parametres d'une autre fonction, mais dans ce cas là, c'est à toi de les passer (ou au moins, de les transférer) à la bonne méthode.
    si l'appelant de ton programme te passe tes parametres en ligne de commande, tu ne pourras pas y couper, il faut avoir ces parametres en entrée de ton main().

    il faudrait que tu précises un peu plus ce que tu cherches a réaliser...

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Si tu veux vraiment passer un char** en paramètre, tu vas te faire ch*** avec les allocations dynamiques et la gestion de la mémoire en général. Tant qu'à faire une fonction, tu ne peux pas la modifier pour qu'elle prenne un paramètre un peu plus C++ friendly (std::vector<std::string> par exemple) ?

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Par défaut
    Un char c'est un caractère.
    Un char * c'est un tableau de char (donc une chaine de caractères).
    Un char ** c'est un tableau de... chaines de caractères.
    Le argc sert à savoir combien d'éléments il y a dans ton tableau de chaines de caractères.
    Maintenant, je ne vois pas trop l'interet de vouloir passer des arguments style ligne de commande dans un programme normal.

  5. #5
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Un char * c'est un tableau de char (donc une chaine de caractères).
    Un char ** c'est un tableau de... chaines de caractères.
    Pas vraiment:
    un "char*" est un pointeur sur un "char", ce "char" pouvant être le premier élément d'une zone mémoire valide contenant des "char", un tableau de "char".

  6. #6
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Citation Envoyé par seriousme
    Pas vraiment:
    un "char*" est un pointeur sur un "char", ce "char" pouvant être le premier élément d'une zone mémoire valide contenant des "char", un tableau de "char".
    Pointeur, tableau... ce ne sont pas des synonymes ?
    Quand on utilise un pointeur "de base", il s'agit en fait d'un tableau avec une seule valeur, non ? On pourrait même accéder à la donnée pointée par MonPointeur[0] au lieu de *Monpointeur, non ?

  7. #7
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Pointeur, tableau... ce ne sont pas des synonymes ?
    Non et pour s'en convaincre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    char* p=new char[10];
    char t[10];
    std::cout<<"sizeof(p) : "
             <<sizeof(p)
             <<std::endl<<"sizeof(t) : "
             <<sizeof(t)
             <<std::endl;
    Mais dans la plupart des contextes un tableau est remplacé par "un pointeur du type des éléments du tableau pointant sur la 1ere case du tableau".

Discussions similaires

  1. Encapsulation graphique d'un outil en ligne de commande
    Par Leishmaniose dans le forum Composants VCL
    Réponses: 3
    Dernier message: 12/11/2003, 11h59
  2. Comment compiler un projet en ligne de commande ?
    Par mathieutlse dans le forum EDI
    Réponses: 3
    Dernier message: 11/07/2003, 13h32
  3. Réponses: 3
    Dernier message: 07/04/2003, 20h06
  4. Récuperer Arguments sur la ligne de commande ?
    Par Muetdhiver dans le forum x86 16-bits
    Réponses: 9
    Dernier message: 20/01/2003, 21h01
  5. Analyser la ligne de commande
    Par benj29 dans le forum C
    Réponses: 14
    Dernier message: 19/11/2002, 04h13

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