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 :

Aide while variable de contrôle


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Collégien
    Inscrit en
    Novembre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Collégien
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2017
    Messages : 3
    Par défaut Aide while variable de contrôle
    Bonjour,
    je suis débutant en programmation C et j'ai un problème lors de l'implémentation d'une boucle while avec une variable de contrôle.

    Je souhaite demander à un utilisateur d'entrer une valeur (un int) et si jamais la valeur entrée n'est pas un int, je veux redemander la saisie jusqu'à obtenir une valeur cohérente.

    J'ai essayé plusieurs choses, mais actuellement je tombe dans une boucle infinie qui affiche mon message d'erreur.
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	int int_colonne ;
        int int_colonneRetour ;  
     
    	printf("Entrez la colonne où placer un pion \n");
    	int_colonneRetour = scanf("%d", &int_colonne) ;
     
    	while( (int_colonne > N) || (int_colonneRetour !=1) ) {
     
    		printf("erreur de saisie, veuillez entrer une colonne valide \n");
    		int_colonneRetour = scanf("%d", &int_colonne) ;
    	}

    La première condition de mon while marche correctement, j'arrive bien à demander une nouvelle saisie si l'entier saisi est trop grand, en revanche si je saisis un string, j'ai une boucle infinie.

    Merci de votre aide !
    Bon dimanche

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par max64btz Voir le message
    La première condition de mon while marche correctement, j'arrive bien à demander une nouvelle saisie si l'entier saisi est trop grand, en revanche si je saisis un string, j'ai une boucle infinie.
    C'est normal. Le souci de scanf() c'est que si ce qu'on entre ne correspond pas pile poil à ce qu'il attend, il refuse la saisie. Celle-ci reste donc dans le clavier et à la boucle suivante, il tente à nouveau de lire ce qui se trouve dans le clavier, le refuse de nouveau et ainsi de suite.

    Pour que tu arrives à faire ce que tu souhaites, il te faut commencer par récupérer tout le contenu du clavier comme si c'était une string char saisie[100] puis fgets(saisie, 100, stdin). Ainsi le clavier est alors clean car tout se trouve dans la zone de saisie.
    Ensuite, tu dois utiliser sscanf() qui fonctionne comme son homologue à ceci près qu'il récupère les infos non plus au clavier mais dans une string => sscanf(saisie, "%d", &int_colonne). Et là tu peux alors regarder si ça réussit ou pas en fonction de son retour.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

Discussions similaires

  1. [XL-2010] Simplifier code à l'aide de variables tableaux
    Par Alasgard dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 16/03/2016, 11h41
  2. [Aide] récupérer variable d'un thread
    Par magic_panda dans le forum Général Python
    Réponses: 8
    Dernier message: 13/06/2013, 17h10
  3. Réponses: 2
    Dernier message: 22/05/2007, 16h18
  4. [Reporting services] passe de valeur à l'aide de variable
    Par alpachico dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/02/2007, 10h20
  5. Réponses: 8
    Dernier message: 20/06/2006, 16h25

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