Probleme en c

WRIDANIOS Messages postés 24 Statut Membre -  
Mahmah Messages postés 497 Statut Membre -
Bonjour,

ce ci est un exemple de programme :
#include <stdio.h>

int main(void)
{
char ca;

do {
flushall();
ca=getchar();
if(ca!='a'); {
printf("erreur");
}
}while(ca!='a');
return 0;
}

l'affichage est le suivas lors du saisie un car != de 'a';

"erreurerreur"
.
j'explique :
le progame affiche le message "erreur" lors de la premiere saisie d'un caractaire != de 'a' puis il reboucle et affiche un 2eme message "erreur" sans attendre une saisie par le clavier ....
aucune idee pour quoi !!!!
a vous ! merci

3 réponses

Laaris Messages postés 131 Statut Membre 73
 
il y a un point virgule en trop après le if mais je ne sais pas si le problème vient de là
0
WRIDANIOS Messages postés 24 Statut Membre 1
 
c t just une erreur de frappe

c justement le programe que j'ai dans le compilateur...

#include <stdio.h>

int main(void)
{
char ca;

do {
ca=getchar();
if(ca!='a') {
printf("erreur");
}
}while(ca!='a');
return 0;
}

0
Laaris Messages postés 131 Statut Membre 73
 
Peut-être que ton code prend le caractère "retour chariot" en compte, du coup, quand tu tapes "X" suivi de "Entrée", pour lui il y a deux caractères, donc il lit le X, affiche "erreur", re-rentre dans la boucle, lit le "retour chariot" et ré-affiche "erreur".

Mais ce n'est qu'une supposition.

Tapes "XX" pour voir s'il affiche trois fois "Erreur".
0
WRIDANIOS Messages postés 24 Statut Membre 1 > Laaris Messages postés 131 Statut Membre
 
oui , ça ce passe,
comment faire donc ? merci !!
0
Laaris Messages postés 131 Statut Membre 73 > WRIDANIOS Messages postés 24 Statut Membre
 
Essaye de remplacer le getchar par un scanf mais je ne garantis pas le résultat, ça fera peut-être pareil.
0
WRIDANIOS Messages postés 24 Statut Membre 1 > Laaris Messages postés 131 Statut Membre
 
c'est pareil, bon,
j'ai une solution, c'est de vider la memoir tampon avant de la saisie d'un caractaire ,
j'ai essayer d'utiliser "flushall()" avant scanf("%c",&ca) mais sa ve pas fonctionner , il maffiche l'erreur
tst3.c:9: warning: implicit declaration of function ‘flushall’
0
Laaris Messages postés 131 Statut Membre 73 > WRIDANIOS Messages postés 24 Statut Membre
 
Charge la bibliothèque conio.h et essaye avec getch (à la place de getchar ou scanf) normalement ça marche parce que tu n'as pas à faire "entrée" pour que ton caractère soit lu.
0
Mahmah Messages postés 497 Statut Membre 125
 
Bonjour,

Ce qu'il faut tout simplement c'est vider le buffer clavier.

Faq C sur Developpez.com : Vider le buffer clavier.

M.
0