Problèmes instructions if

Fermé
Rack - 21 mars 2014 à 17:10
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 22 mars 2014 à 01:10
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

MaxBeIZI Messages postés 55 Date d'inscription jeudi 24 octobre 2013 Statut Membre Dernière intervention 2 mai 2014 5
21 mars 2014 à 17:53
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
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
21 mars 2014 à 22:17
Un do sans while ?
Ca ne fonctionnera pas...
0
MaxBeIZI Messages postés 55 Date d'inscription jeudi 24 octobre 2013 Statut Membre Dernière intervention 2 mai 2014 5
22 mars 2014 à 00:42
j'ai coupé le code
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
22 mars 2014 à 00:51
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
MaxBeIZI Messages postés 55 Date d'inscription jeudi 24 octobre 2013 Statut Membre Dernière intervention 2 mai 2014 5
22 mars 2014 à 00:52
j'ai retiré les {
0
MaxBeIZI Messages postés 55 Date d'inscription jeudi 24 octobre 2013 Statut Membre Dernière intervention 2 mai 2014 5
22 mars 2014 à 00:53
0
Utilisateur anonyme
21 mars 2014 à 18:04
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
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
21 mars 2014 à 22:17
Je pense plutôt qu'il voulait faire :

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


Cela permettra de vider le buffer clavier.

Cdlt,
0