Probleme en c

WRIDANIOS Messages postés 24 Date d'inscription   Statut Membre Dernière intervention   -  
Mahmah Messages postés 496 Date d'inscription   Statut Membre Dernière intervention   -
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 130 Date d'inscription   Statut Membre Dernière intervention   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 Date d'inscription   Statut Membre Dernière intervention   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 130 Date d'inscription   Statut Membre Dernière intervention   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 Date d'inscription   Statut Membre Dernière intervention   1 > Laaris Messages postés 130 Date d'inscription   Statut Membre Dernière intervention  
 
oui , ça ce passe,
comment faire donc ? merci !!
0
Laaris Messages postés 130 Date d'inscription   Statut Membre Dernière intervention   73 > WRIDANIOS Messages postés 24 Date d'inscription   Statut Membre Dernière intervention  
 
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 Date d'inscription   Statut Membre Dernière intervention   1 > Laaris Messages postés 130 Date d'inscription   Statut Membre Dernière intervention  
 
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 130 Date d'inscription   Statut Membre Dernière intervention   73 > WRIDANIOS Messages postés 24 Date d'inscription   Statut Membre Dernière intervention  
 
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 496 Date d'inscription   Statut Membre Dernière intervention   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