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 :

Verification d'une chaine de caractére


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 13
    Points : 6
    Points
    6
    Par défaut Verification d'une chaine de caractére
    Bonjour, je suis actuellement entrain de me lancer dans la création d'un programme dans lequel je n'arrive pas a faire quelque chose ...
    Voila mon problème, a un moment pendant l'éxécution de mon programme une adresse IP sera demandée à l'utilisateur, je voudrai que le programme réponde :
    "Adresse IP incorrect" si celle ci ne correspond pas au format habituelle, c'est a dire xx . xx . xx . xx (127.0.0.1 par exemple)
    Mais je ne sais absolument pas comment m'y prendre, peut être avec la lib "string.h" ?
    Je ne sais pas, a vous de me dire, il faut savoir aussi que je suis encore assez .. débutant, alors n'hésitez pas a bien expliquer s'il vous plait

    J'éspére que vous pourrez m'aider ...

    bye

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Salut !

    alors, le problème, c'est que, surtout en C, je ne pense pas qu'il y ait de moyen "simple" de le faire...

    il faudrait que tu vérifie que le format de ta chaîne correspond bien à ce que tu attend... tu peux t'aider de strpos, en sachant que tous les chiffres sont regrouppés entre '0' et '9', ça va être pénible à faire je suppose, mais je ne pense pas qu'il y ait de moyen plus simple à priori...

    essaie de voir sur internet si ça n'existe pas déjà
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  3. #3
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par tchiki
    Bonjour, je suis actuellement entrain de me lancer dans la création d'un programme dans lequel je n'arrive pas a faire quelque chose ...
    Voila mon problème, a un moment pendant l'éxécution de mon programme une adresse IP sera demandée à l'utilisateur, je voudrai que le programme réponde :
    "Adresse IP incorrect" si celle ci ne correspond pas au format habituelle, c'est a dire xx . xx . xx . xx (127.0.0.1 par exemple)
    Mais je ne sais absolument pas comment m'y prendre, peut être avec la lib "string.h" ?
    Je ne sais pas, a vous de me dire, il faut savoir aussi que je suis encore assez .. débutant, alors n'hésitez pas a bien expliquer s'il vous plait

    J'éspére que vous pourrez m'aider ...

    bye

    string.h n'est pas une librairie mais un fichier d'en tete.

    Alors c'est tres simple tu demandes de saisir, tu fais la saisie via fgets.
    Et ensuite tu recupere les infos que tu souahite via sscanf

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    fgets(buffer, sizeof buffer, stdin);
    if(sscanf(buffer, "%d.%d.%d.%d", &un, &deux, &trois, &quatre) != 4) /* erreur de saisie */
    else if(un > 255 || deux > 255 || trois > 255 || quatre > 255 || un < 0 || deux < 0 || trois < 0 || quatre < 0) /* erreur */
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  4. #4
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    arf, je pense jamais à scanf et ses dérivés... trop pas l'habitude de les utiliser XD
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Merci a vous deux, je viens d'essayer avec ta proposition Skyrunner mais le programme renvoi a chaque fois :
    "Adresse IP incorrect !"
    Voila mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    fgets(buffer, sizeof buffer, stdin);  
    if(sscanf(buffer, "%d.%d.%d.%d", &un, &deux, &trois, &quatre) != 4) /* erreur de saisie */
    {
                      printf ("Adresse IP incorrect !");
                      }
    else if(un > 255 || deux > 255 || trois > 255 || quatre > 255 || un < 0 || deux < 0 || trois < 0 || quatre < 0) /* erreur */
    {
         printf ("Adresse IP incorrect !");
         }
         else
         {
             printf ("Adresse IP correct !");
             }
    Peut être ai-je mal compris comment l'utiliser ?

    Au faites, y a t'il un fichier d'en tête particulier a ajouter pour que le code fonctionne ?

    [Euh ... je suis débutant]

  6. #6
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    si mes souvenirs sont bon, il faut que un, deux, trois et quatre soient des int
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Toujours le meme probléme, que ce soit int ou long
    Buffer doit il être une variable ? Je ne connais pas ça alors je l'ai mis en tant que variable (lors de la compilation un message d'erreur me disait que je n'avais pas déclarer la variable buffer ...)
    Enfin ... toujours est il que ça ne marche pas (pour l'instant)

  8. #8
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    buffer est censé être le char* qui contient la chaîne que tu veux valider comme étant ou non une adresse IP
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  9. #9
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par tchiki
    Toujours le meme probléme, que ce soit int ou long
    Buffer doit il être une variable ? Je ne connais pas ça alors je l'ai mis en tant que variable (lors de la compilation un message d'erreur me disait que je n'avais pas déclarer la variable buffer ...)
    Enfin ... toujours est il que ça ne marche pas (pour l'instant)
    Essaye de déclarer buffer comme ceci :
    Software Failure. Press left mouse button to continue.
    Guru Meditation #0100000C.000FE800

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Ca marche, c'est parfait, merci beaucoup

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par tchiki
    Voila mon problème, a un moment pendant l'éxécution de mon programme une adresse IP sera demandée à l'utilisateur, je voudrai que le programme réponde :
    "Adresse IP incorrect" si celle ci ne correspond pas au format habituelle, c'est a dire xx . xx . xx . xx (127.0.0.1 par exemple)
    http://emmanuel-delahaye.developpez.com/clib.htm
    Module IPV4

    Pose des questions si tu ne comprends pas.
    Pas de Wi-Fi à la maison : CPL

  12. #12
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    je rejouterais quand meme une condition >= 0 pour chaque
    Sinon tu aurais un -174.-23.-52.-12 valide

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Merci Emmanuel Delahaye, je vais voir ça :]

    becket, ce que tu proposes était déja dans le code de Skyrunner, sauf qu'en plus tu proposes de mettre <= 0 ce qui veut dire que même les IP avec des 0 seront refusées et ça ce n'est pas le but ... en effet si une personne veut utiliser l'IP 127.0.0.1 il faut que les zéros soient autorisés ...

    Et enfin j'ai une derniére question à propos du code de Skyrunner ...
    Je me demande a quoi sert le stdin dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fgets(buffer, sizeof buffer, stdin);

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par tchiki
    Et enfin j'ai une derniére question à propos du code de Skyrunner ...
    Je me demande a quoi sert le stdin dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fgets(buffer, sizeof buffer, stdin);
    C'est le flux entrant standard (la console en général).

    Remarque : c'est une notion très basique du langage C... Si tu ne connais pas le C, tu vas souffirir... (et nous aussi...)

    http://emmanuel-delahaye.developpez....tes.htm#saisie
    http://emmanuel-delahaye.developpez....s.htm#fichiers
    Pas de Wi-Fi à la maison : CPL

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Oui en effet je suis encore assez débutant, j'avais cherché tout de même ce nom (stdin) sur google et j'ai vu une définition mais je ne comprennais pas trop pourquoi l'intégrer la dedans ...
    M'enfin le probléme est résolu, c'est l'essentiel
    Merci a tous

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

Discussions similaires

  1. [Débutant] verification si une chaine contient une autre
    Par SISGI dans le forum ASP.NET
    Réponses: 8
    Dernier message: 30/10/2012, 17h14
  2. convertir une chaine de caract en code Perl
    Par radahm dans le forum Langage
    Réponses: 3
    Dernier message: 29/04/2009, 21h05
  3. [VBA excel] Extraire une chaine de caract. d'une cellule.
    Par Mourne dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 17/01/2007, 08h35
  4. [XSLT] vérification si une chaîne est une date
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 22/06/2006, 15h06
  5. Réponses: 10
    Dernier message: 22/05/2004, 13h51

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