Probleme en c

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
--
GET BUSY................UBUNTU.....
Configuration: Linux
Firefox 2.0.0.13

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. il y a un point virgule en trop après le if mais je ne sais pas si le problème vient de là
    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;
      }

      1. 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".
      2. @Laarisoui , ça ce passe,
        comment faire donc ? merci !!
      3. @WRIDANIOSEssaye de remplacer le getchar par un scanf mais je ne garantis pas le résultat, ça fera peut-être pareil.
      4. @Laarisc'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’
      5. @WRIDANIOSCharge 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.