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 :

Vérifier un argument.


Sujet :

C

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2011
    Messages : 1
    Par défaut Vérifier un argument.
    Bonjour.

    Alors voila, dans le cadre de mes études, je dois rendre un projet sous linux, demandant de faire un certain nombre d'opérations depuis la commande dans la console

    ./monprogramme x y

    x et y doivent être des nombres,par exemple :

    ./monprogramme 56 998

    Je dois donc vérifier ces arguments.
    Seulement j'ai beaucoup de mal a le faire.
    J'ai tenté avec les fonction strtol, isdigit, iswdigit mais je ne m'en sort pas.
    Quelqu'un pourrait m'aider?
    Merci d'avance

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 094
    Billets dans le blog
    145
    Par défaut
    Bonjour,

    Personnellement j'utilise sscanf() afin de lire des nombres venant d'une chaine de caractères. Sachant que les arguments d'un programme sont des chaines de caractères ... je vous le conseille
    (L'avantage de sscanf() est la valeur de retour, qui indique s'il a réussi à lire ce que nous voulions (le format)). Je vous invite à lire la FAQ C si vous avez besoin de plus d'explications (et j'ose croire, il y a un exemple) -> http://c.developpez.com/faq/c/ )
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Salut

    Pour lire les valeurs passées en argument, tu dois écrire le main de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int main(int argc, char *argv[])
    {
    ...
    }
    argc contient le nombre de paramètres passés au programme et argv est un tableau de pointeurs, chacun pointant vers une chaine de caractères correspondant à l'argument.
    Sous Windows, le premier pointeur du tableau pointe vers le nom de l'exécutable ; je ne sais pas s'il en est de même sous Linux, il faudra vérifier.

    Pour convertir une chaine, contenant des chiffres, en un entier, tu peux en effet utiliser strtol. Voici le man : http://manpagesfr.free.fr/man/man3/strtol.3.html . Il y a un exemple en bas de page, qui explique comment l'utiliser.

    Tu peux aussi utiliser sscanf. Le man de la fonction : http://man.developpez.com/man3/scanf.3.php . Un tuto : http://xrenault.developpez.com/tutoriels/c/scanf/

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 094
    Billets dans le blog
    145
    Par défaut
    Citation Envoyé par jeroman Voir le message
    Sous Windows, le premier pointeur du tableau pointe vers le nom de l'exécutable ; je ne sais pas s'il en est de même sous Linux, il faudra vérifier.
    Il en est de même sous GNU/Linux ...
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre très actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2011
    Messages : 247
    Par défaut
    Qu'est ce que tu entends par "vérifier"?
    Si c'est pour être sûr que ce sont des nombres, il suffit de parcourir les caractères a l'aide de 2 boucles imbriquées en comparant les codes ascii des caractères avec ceux des chiffres (de 0 à 9). Si c'est différent alors un caractère n'est pas un nombre (tu peux sortir de la boucle).

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 094
    Billets dans le blog
    145
    Par défaut
    C'est bien pour cela que l'on utilise strlol ou scanf ... pour avoir des fonctions un peu plus avancées ... et qui nous évitent à faire ces classiques taches
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. Arguments pour et contre Access ?
    Par bottura dans le forum Sondages et Débats
    Réponses: 240
    Dernier message: 23/03/2018, 23h25
  2. Réponses: 6
    Dernier message: 07/02/2011, 09h06
  3. Vérifier si plusieurs arguments sont présents
    Par ApocKalipsS dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 08/12/2010, 11h28
  4. Vérifier l'extension d'un fichier passé en argument
    Par willem77 dans le forum Débuter
    Réponses: 11
    Dernier message: 14/08/2007, 13h27
  5. Procédure avec un nombre variable d'arguments
    Par charly dans le forum Langage
    Réponses: 15
    Dernier message: 21/06/2002, 11h08

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