mám program, který postupně čte čísla,s každým provede výpočet a ten potom vytiskne.
V podstatě můj kód vypadá takto:
#include <stdio.h>
#include <stdlib.h>
int main()
{
double x;
int cteni;
while((cteni = scanf("%lf", &x)) != EOF)
{
if (cteni == 0)
x = 0.0/0.0; //NAN
printf("%lf\n", x = x * x);
}
return 0;
}
Čtení tedy ukončuji EOF, a když nastane chyba při čtení čísla počítá se s hodnotou NAN.
Když zadávám korektní čísla, tak vše funguje, ale jakmile zadám písmeno tak se zacykli a vypisuje NAN.
Proč je program zacyklí? Když se nepodaří přečíst číslo, cteni by se mělo rovnat 0, vytisknout se jednou NAN a poté číst další číslo, ale tak to zjevně není když to nefunguje.
Tak fflush(stdin) neni nejstastnejsi, při hodnotach "1 2 3 50 60 \ENTER" zpracuje 1 a ostatni zahodi. Coz je pochopitele, kdyz fflush(stdin) vyprazdni buffer a pri cteni se nejdriv nactou data do bufferu a az pote se snimi pracuje.