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

3 réponses

  1. 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
  2. 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
    1. 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
    2. WRIDANIOS Messages postés 24 Statut Membre 1 > Laaris Messages postés 131 Statut Membre
       
      oui , ça ce passe,
      comment faire donc ? merci !!
      0
    3. 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
    4. 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
    5. 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