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 :

fonction qui crée un tableau équivalent à argv


Sujet :

C

  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 501
    Par défaut fonction qui crée un tableau équivalent à argv
    Bonjour,

    J'aimerais savoir créer une fonction qui reviendrait à créer l'équivalent du tableau argv (sans l'utiliser bien sur).

    Je me demande comment c'est possible pour récupérer toute la chaine de caractere tapée lorsqu'on lance un programme :

    ./monprog option1 option2 etc...

    Merci de m'indiquer la voie...

    ++

  2. #2
    Membre Expert
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Par défaut
    Tu veux dire récupérer une phrase tapée au clavier avec un fgets et récupérer chacun des mots de cette phrase dans un tableau ?

  3. #3
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 501
    Par défaut
    non non, ce que je veux faire c'est par exemple, taper cette ligne de commande :

    ./monprog option1 option2 etc....

    et dans mon prog, j'ai une fonction qui va me récupérer ce que j'ai tapé dans la ligne de commande... et après je stocke ca dans un tableau de pointeur sur caractère.

    C'est possible ou pas ? de récupérer ce qu'on a tapé avant dans la ligne de commande, avant le lancement du programme ?

    En fait c'est obtenir le meme résultat que le tableau argv... mais en faisant soit meme la fonction qui récupère la chaine de caractere tapée dans la ligne de commande

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par italiasky
    non non, ce que je veux faire c'est par exemple, taper cette ligne de commande :

    ./monprog option1 option2 etc....

    et dans mon prog, j'ai une fonction qui va me récupérer ce que j'ai tapé dans la ligne de commande... et après je stocke ca dans un tableau de pointeur sur caractère.
    C'est pas possible de manière portable. Pourquoi tu veux faire ça ? Il suffit de définir main() comme il faut et tu as accès à la ligne de commande, c'est fait pour. Pourquoi ce bricolage infâme ? C'est bien légal ça ?

  5. #5
    Membre émérite
    Avatar de Freed0
    Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    635
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 635
    Par défaut
    Pourquoi réinventer la roue ?

    Au mieux, tu créer une fonction qui recopie les arguments dans un tableau...

  6. #6
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 501
    Par défaut
    Lol je suis bien d'accord avec vous mais c'est pour un exercice !
    A moins que le but de l'exo c'est juste de recopier le tableau argv, ce n'est pas préciser mais dans ce cas je ne vois pas de réel intérêt à cet exo, enfin bon merci quand meme !

    Bonne soirée

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par italiasky
    Lol je suis bien d'accord avec vous mais c'est pour un exercice !
    Tu peux montrer l'énoncé ?

  8. #8
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 501
    Par défaut
    L'énoncé :

    L’objectif de cet exercice est de programmer une fonction qui a partir d’une chaine de caractères représentant des paramètres en ligne de commande fournit un tableau des différents éléments de cette ligne de commande.
    Exemple : la chaine suivante :
    "monprog -c -l=34 --o bonjour le monde "
    donnera pour résultat : (la c'est un dessin, un tableau de pointeur sur chaine de caractère, qui ressemble à argv en fait...)

    Enfin je voulais peut etre aller trop loin ?
    Il faut juste se servir de argv et argc et recopier le tout dans un tableau ?

    Je trouvais qu'il y avait plus d'intérêt dans l'exercice à récupérer directement soi meme la ligne de commande mais bon si c'est une usine à gaz qu'il faut faire, je ne pense pas que c'était ca le but dans l'exo dans ce cas mais ce n'est pas précisé c'est pour ca j'ai pensé large...

    Merci
    ++

    Ps : mais c'est quand meme préciser de créé une bibliothèque pour la fonction d'analyse. Donc si on récupere que ce qu'il y a dans argc, je ne vois pas l'intéret d'une bibliothèque... ?

  9. #9
    Membre Expert
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Par défaut
    C'est vrai que l'énoncé prête à confusion
    a partir d’une chaine de caractères représentant des paramètres en ligne de commande
    mais je pense que le prof se réfère au paramètre argv de main.

  10. #10
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 501
    Par défaut
    Ok je vais partir sur ca alors, ce sera plus à ma portée...

    Merci
    ++

  11. #11
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par italiasky
    L'énoncé :<...>
    OK. C'est simple.

    A partir d'une chaine qui représente une ligne de commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char const *s = "monprog monparam1 monparam2";
    analyser la chaine et appeler une fonction de traitement sur le même format que main() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
       ??? argc = ???
       ??? argv = ???
     
       monmain (argc, argv);
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       monmain (int argc, char **argv);
    Ce mécanisme est très courant quand on réalise un interpréteur de commande.

  12. #12
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 501
    Par défaut
    ah oui en effet on peut voir ca comme ca aussi...

    Le but n'étant pas de récupérer ce qu'on avait tapé sur la ligne de commande en lançant notre programme, mais dans notre programme, qu'on puisse taper une chaine de caractères qui aurait la forme d'une commande et donc de l'analyser.

    Donc à la base il faut déja partir sur un fgets ou une fonction du genre pour qu'on puisse taper une chaine de caractère au clavier...

    ok merci, je vais partir dans ce sens la alors maintenant lol

    Ps: la différence entre char const * et char * c'est quoi ?

  13. #13
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par italiasky
    Ps: la différence entre char const * et char * c'est quoi ?
    Soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
       char s[] = "hello";
       char *p_rw = s;
       char const *p_ro = s;
    p_rw fourni un accès en lecture / ecriture (read / wrire) à la chaine s.

    On peut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      int c = p_rw[3]; /* lecture */
      p_rw[4] = c;   /* ecriture */
    p_ro fourni un accès en lecture seule (read-only)

    On peut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      int c = p_ro[3]; /* lecture */
    mais pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      p_ro[4] = c;   /* ecriture */
    Une bonne occasion de tester ton compilateur...

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

Discussions similaires

  1. Comment faire une fonction qui renvoi un tableau.
    Par poly128 dans le forum Delphi
    Réponses: 2
    Dernier message: 01/06/2006, 01h04
  2. fonction qui crée un objet
    Par crossbowman dans le forum C++
    Réponses: 4
    Dernier message: 16/03/2006, 21h23
  3. [VB] Fonction qui retourne un tableau
    Par ptitsoleil87 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 24/12/2005, 10h52
  4. Fonction qui renvoie un tableau?
    Par elm dans le forum C
    Réponses: 23
    Dernier message: 21/12/2005, 12h44
  5. Fonction qui retourne un tableau
    Par _lara_ dans le forum ASP
    Réponses: 6
    Dernier message: 24/05/2004, 15h06

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