Problèmes instructions if

Rack -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
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

  1. MaxBeIZI Messages postés 56 Statut Membre 5
     
    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);

    }
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Un do sans while ?
      Ca ne fonctionnera pas...
      0
    2. MaxBeIZI Messages postés 56 Statut Membre 5
       
      j'ai coupé le code
      0
    3. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      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) ?
      0
    4. MaxBeIZI Messages postés 56 Statut Membre 5
       
      j'ai retiré les {
      0
  2. Utilisateur anonyme
     
    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');
    0
  3. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Je pense plutôt qu'il voulait faire :

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


    Cela permettra de vider le buffer clavier.

    Cdlt,
    0