Problèmes instructions if

Bonjour,

Je n'arrive pas à comprendre pourquoi, mais la console bloque après avoir exécuté l'instruction: var=lireCharactere(); dans la boucle do while

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

char lireCharactere();

int main()
{
    char var;

char reponse[10];



do{



var=lireCharactere();

if(var=='a'){printf("ce caractere est une voyelle");}
else if(var=='z'){printf("ce caractere est une consonne");}



printf("continuer?");
scanf("%s", reponse);

}while(strcmp(reponse, "oui")==0);
}

char lireCharactere(){

char charactere;

charactere=getchar();

while (charactere != '\n');

return charactere;

}

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. Essayes comme çà :


    do
    {
    var=lireCharactere();

    if(var=='a')
    printf("ce caractere est une voyelle");
    else if(var=='z')
    printf("ce caractere est une consonne");

    printf("continuer?");
    scanf("%s", reponse);

    }
    1. Contributeur
      Un do sans while ?
      Ca ne fonctionnera pas...
    2. j'ai coupé le code
    3. Contributeur
      Ok. Alors du coup, je ne vois pas ce que tu as changé dans son code (hormis les accolades du if qui ne changent rien) ?
    4. j'ai retiré les {
  2. Bonjour

    charactere=getchar();
    while (charactere != '\n');
    


    Ce while est une boucle infinie. Dès que le caractère est différent de \n, on ne peut pas sortir du while.

    Je suppose que tu voulais faire
    do {
      charactere=getchar();
    }while (charactere != '\n');
    

    mais la condition n'est pas très satisfaisante, ce serait plutôt while (charactere == '\n');
    1. Contributeur
      Je pense plutôt qu'il voulait faire :

      charactere=getchar();
      while (getchar() != '\n');


      Cela permettra de vider le buffer clavier.

      Cdlt,