Structure while en C

icode15 Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

je voudrais creer une boucle qui est
tant que l'utilisateur entre une lettre differente de 'n 'on reste dans la boucle en lui posant tjrs la meme question
voici ce que j'ai fait

char rep;
main(void){

do{
    printf("Entrer la lettre n \n");
    scanf("%c",&rep);

 }
while (rep!='n');

mais ne marche pas
une solution?

2 réponses

Arya Dröttningu Messages postés 581 Date d'inscription   Statut Membre Dernière intervention   157
 
Bonjour,
ça te met quoi exactement ? Là pour le moment je peux pas tester mais essaye peut-être avec la fonction strcmp pour comparer les 2 chaines.
0
icode15 Messages postés 57 Date d'inscription   Statut Membre Dernière intervention  
 
quelque soit la lettre entrée
ça m'affiche
Entrer la lettre n
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
strcmp c'est pour deux chaînes de caractères, pas pour comparer des char.
0
Arya Dröttningu Messages postés 581 Date d'inscription   Statut Membre Dernière intervention   157
 
ah ok j'étais pas sûr.
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bonjour,
Ceci est normal, car il faut faire un flush du buffer clavier. Sinon le '\n' sera considéré comme un caractère.
Cdlt,
0
icode15 Messages postés 57 Date d'inscription   Statut Membre Dernière intervention  
 
tu peux m'en dire plus sur le code a ecrire dans ce cas
suis encore debutant
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Cela donnerait :
int main(void) {
  do {
    int rep,c;

    printf ("....");
    fflush(stdout);

    rep=getchar();
    while( (c=getchar()) != '\n' && c != EOF);
   } while(rep!='n');
  
return 0;
}

Cela doit pouvoir s'écrire de manière plus concis, mais le squelette doit fonctionner. A toi de t'en inspirer.
Cdlt,
0