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

Bibliothèque standard C Discussion :

Probléme ET et OU logique pour saisie sécurisée


Sujet :

Bibliothèque standard C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 31
    Points : 18
    Points
    18
    Par défaut Probléme ET et OU logique pour saisie sécurisée
    Bonjour,

    Pour les besoins de mon programme j'essaye de créer une fonction de saisie sécurisé d'un entier.

    Cependant je rencontre un probléme dans la condition de ma boucle do...while
    Aprés quelque recherche sur le net, je ne trouve pas ma réponse.

    J'aimerai pouvoir sortir de ma boucle lorsque "choix" :

    - choix != 0
    - choix = 100
    - choix = 1000
    - choix > 0 et choix < nbprod

    J'ai essayer plusieurs variantes avec les Et et les OU mais cela ne fonctionne toujours pas.

    Voici ma fonction de saisie sécurisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    int saisie_secu(char *chaine, int longueur)
    {
                  char *pos = NULL;
                  if (fgets(chaine, longueur, stdin) != NULL)
                  {
                            pos = strchr(chaine, '\n');
                            if (pos != NULL)
                            {
                            *pos = '\0';
                            }
                            else
                            {
                            CLEAR_BUFFER();
                            }
                            return 0;
                  }
                  else
                  {
                  CLEAR_BUFFER();
                  return 1;
                  }
    }
    Et voici la boucle ou je rencontre le probléme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    int main()
    {
    int nbprod = 10; /* Pour exemple, car nbprod est variable mais ne depassera jamais 50 */
    char cx[3];
    int test,choix;
     
    do
    {
            do
            {
             test = saisie_secu(cx, 3);
             }
             while (test == 1);
              choix = atoi(cx);
    }
    while (choix == 0 || choix >= nbprod && choix != 100 && choix != 1000);
    }

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    Et bien j'ai trouver la solution à mon probléme :
    Je vous en fait profiter, si cela peu aider certains.

    J'ai utiliser comme condition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    do
    {
     
    }
    while ((choix == 0 || choix >= nbprod) && (choix != 100 && choix != 1000));
    Le probléme venait essentiellement du faite que j'utiliser une chaine de caractére trop petite ==>char cx[3];

    Cette chaine n'aurait jamais pu contenir le nombre 100 et encore moins 1000

    Donc correction ==> char cx[5];
    et
    test = saisie_secu(cx, 5);

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

Discussions similaires

  1. Saisie sécurisée pour entier : c++
    Par dekalima dans le forum Langage
    Réponses: 1
    Dernier message: 06/09/2010, 09h44
  2. [JMeter] Problème avec la boucle infinie pour les tests
    Par zegreg dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 05/10/2005, 11h41
  3. vba masquer afficher un champ pour saisie
    Par rollly dans le forum Access
    Réponses: 4
    Dernier message: 21/09/2005, 16h40
  4. Problème d'ouverture de fenetre apres saisie d'un formulaire
    Par marsupilami34 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 10/08/2005, 08h52
  5. Réponses: 3
    Dernier message: 24/02/2005, 15h48

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