Pisząc maly programik typu kalkulator, do którego kod znajdziecie poniżej napotkałem na pewien problem:
#include
int main ()
{
char znak;
float nb1, nb2, resultat;
printf("1 liczba:\n");
scanf("%f", &nb1);
printf("2 liczba:\n");
scanf("%f", &nb2);
printf("\n=== znak===\n\n");
printf("1. '+'\n");
printf("2. '-'\n");
printf("3. '/'\n");
printf("4. '*'\n");
fflush(stdin);
scanf("%c",&znak);
switch (znak)
{
case '+': resultat = nb1 + nb2;
break;
case '-': resultat = nb1- nb2;
break;
case '/': resultat = nb1 / nb2;
break;
case '*': resultat = nb1*nb2;
break;
default: printf("Vous avez choisi une mauvaise operation\n");
}
printf("Resultat de %.2f %c %.2f = %.2f\n", nb1, znak, nb2, resultat);
system("pause");
return 0;
}
Jak wida program pyta o:
-
1 liczbę + scanf
-
liczbę + scanf
-
znak działania + ??? i tutaj hmm. przechodzi od razu do rezultatu, nie czekając na wybór użytkownika. Szukałem trochę w necie i dopisałem “fflush (stdin)” i program dziabie jak malina. Z czego jednak wynika koniecznośc stosowania fflush w tym przykładzie? - to tak jak pominac jakikolwiek scanf, a to mi sie nigdy jeszcze nie przydażyło.