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

 


Dernière réponse
Sujet : [c] pb de fflush
HelloWorld 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

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
HelloWorld 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
shinichi 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 ;)
otb82 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 */

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