Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2294 connectés 

  FORUM HardWare.fr
  Programmation

  [c] pb de fflush

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[c] pb de fflush

n°58851
otb82
Fear is Failure
Posté le 10-09-2001 à 15:54:30  profilanswer
 

je galere avec un tout petit pg de merde (une calculette) ...
je vous explique le principe :
c une mini calculette qui addition soustrait ... 2 nombre et cela en boucle juqu'a ce que l'utilisateurn rentre comme operateur 'q' ...
le pg marche bien au premier passage de la boucle, mais des le 2e passage ca merdoit :)
il me redemande pas l'operateur et pose direct la question suivante ... a mon avis il a garde en memoire un '\n' ou un truc dans le genre et c ca qui fait tt merder ! comment contrer ce bug ...
 
# include <stdio.h>
main() {
 
  char ch = ' ';  
  float a, b, result;
 
   printf("Calculette : \n" );
   while (ch != 'q') {
     fflush(stdin); /* efface le tampon d'entree */
     printf("\n +, -, *, /, q pour quitter : " );
     scanf("%c",&ch);    
     if (ch != 'q') {          
       printf("Entree la premiere valeur : " );
       scanf("%f",&a);
       printf("Entree la seconde valeur : " );
       scanf("%f",&b);
       if (ch == '+') result = a+b;
       else if (ch == '-') result = a-b;
            else if (ch == '*') result = a*b;
                 else if (ch == '/' && b != 0) result = a/b;
                      else {
                         printf("Erreur !!" );
                  continue;
                 } /* if erreur */
       printf("le resultat de %.2f %c %.2f est de %.2f\n",a,ch,b,result);
     } /* if */
   } /* while */
} /* main */


---------------
email : otb82@hotmail.com
mood
Publicité
Posté le 10-09-2001 à 15:54:30  profilanswer
 

n°58958
shinichi
Posté le 11-09-2001 à 09:24:33  profilanswer
 

Déjà, moi je commencerai par faire un do ... while plutôt qu'un while, ça fait plus propre puisque tu passes au moins une fois dans ta boucle ... Ensuite tu fais un fflush, c'est bien (quoique, je suis allergique à ce truc :gun:). Mais tu as 2 autres entrées dans ton prog pour a et b ... le fflush doit être placé à l'endroit critique ... mais bon, change ta structure de boucle tu y verras déjà plus clair ;)


---------------
Le meutrier est ... :hot:
n°59005
HelloWorld
Salut tout le monde!
Posté le 11-09-2001 à 12:25:28  profilanswer
 

moi je me suis un peu penche sur ton prog
et j'avoue que je suis impuissant
sous Windows il marche nickel
si je vire le fflush ca marche plus (et c'est normal)
mais sous Linux, le fflush ne fait rien ...
j'ai resume ton probleme a ca :
 
while (ch != 'q')
{  
    fflush(stdin); /* efface le tampon d'entree */  
    printf("\n +, -, *, /, q pour quitter : " );  
    scanf("%c",&ch);      
}
 
et ben ca chie ...
et j'ai pas trouve pourquoi
pourtant je me suis epluche les man, j'ai meme essaye de choper les sources de stdio mais je les avais pas
par contre ton code est (excuse moi) pas top nivo lisibilite
 
utilise plutot un switch() et surtout indente un peu mieux !!!
si tu indentes bien, t'as pas besoin de mettre des /* while */ ou /* if */ ;)
 
while (ch != 'q')
{  
    fflush(stdin); /* efface le tampon d'entree */  
    printf("\n +, -, *, /, q pour quitter : " );  
    scanf("%c",&ch);      
    if (ch != 'q')
    {            
        printf("Entree la premiere valeur : " );  
        scanf("%f",&a);  
        printf("Entree la seconde valeur : " );  
        scanf("%f",&b);  
        if (ch == '+')
            result = a+b;  
        else if (ch == '-')
            result = a-b;  
        else if (ch == '*')
            result = a*b;  
        else
            if (ch == '/' && b != 0)
                result = a/b;  
            else
            {  
                printf("Erreur !!" );  
                continue;  
            }  
        printf("le resultat de %.2f %c %.2f est de .2f\n",a,ch,b,result);  
    }  
}
 
pour ton probleme, je te suggere d'essayer une autre fonction, genre getch() (conio.h)
moi je deteste scanf, justement a cause des merdes comme ca


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [c] pb de fflush

 

Sujets relatifs
Plus de sujets relatifs à : [c] pb de fflush


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)