C programban milyen kifejezéssel lehet törölni az input buffert? Az fflush (stdin) nem működik.
a válaszok között van egy ilyen is:
fseek(stdin,0,SEEK_END);
ilyet sosem használtam, de gondolom a standard input (mint fájl, mert minden fájl) végére állítja a stream mutatót, ami jónak tűnik, és alatta is azt írták, hogy megy
a programom sehogy se működik jól :(
hogy a francba tudom kimásolni mceditből, és beilleszteni ide?
#include <stdio.h>
#include <math.h>
int main(){
char muvjel;
double adat1, adat2, ered;
printf("1. adat: "); scanf("%lf", &adat1);
printf("2. adat: "); scanf("%lf", &adat2);
fseek(stdin,0,SEEK_END);
printf("mĂĽveleti jel(+,-,*,/): "); scanf("%c", &muvjel);
switch(muvjel)
{
case '+': ered= adat1 + adat2; break;
case '-': ered= adat1 - adat2; break;
case '*': ered= adat1*adat2; break;
case '/': if(fabs(adat2) < 1.0e-6)
{
printf("nevező zérus\n");
getchar();
return 1;
}
else
{
ered=adat1/adat2; break;
}
default:
{
printf("hibás müveleti jel\n"); getchar();
return 1;
}
}
if(muvjel == '/')
printf("\n %lf %c %10e = %lf\n", adat1, muvjel, adat2,
ered);
else
printf("\n %lf %c %lf = %lf\n", adat1, muvjel, adat2,
ered);
fseek(stdin,0,SEEK_END);
return 0;
}
egyrészt nekem működik,
másrészt a végére nem kell az fseek (vagyis minek?),
harmadrészt ha ezzel nem is, de ezzel biztosan menne:
while (getchar()!='\n');
végül pedig...
miért nem olvasod be infix operátorral?
printf("Elvegzendo muvelet (pl. 2+3 vagy 5/4): ");
scanf("%lf%c%lf", &adat1, &muvjel, &adat2);
kész is
nagyon köszönöm :DDD
while (getchar()!='\n'); ezzel működött
egyébként tankönyvből másoltam a feladatot, de vannak benne régi kifejezések, utasítások..
pedig 2004-es kiadás.C
a címe: Együtt könnyebb a programozás: c
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!