C ... ověření čísla

pls jak ošetřím vstup (scanf("%lf", &r);), aby r bylo desetinne cislo?
...jinak je to nekonečná smyčka -> zavření programu

jsem napsal:

if(!isdigit(r)){printf("\nPolomer neni cislo!\n"); getchar(); main();}

ale nějak mi to nefunguje :( ...hlavičku (<ctype.h>) jsem includoval ;-)
<HTML>rekurzivne provadet funkci main() jsem jeste popravde nevidel ani nevim jestli to jde..
znovu rikam, s Cckem jdi na forum.builder.cz tady se C neresi</HTML>
ve funkci main() mám vždy volání main() aby se mi program nezavřel - pokud znáš jiný příkaz (nebo fci) tak budu rád ;-)
no kdyz vidim ten kod, tak by radsi Ondra mel C-cko povesit na hrebik
<HTML>main() {

while(1) {

/*
nekonecna smycka
*/


}

}</HTML>
>> pokud znáš jiný příkaz (nebo fci) tak budu rád
while((c=getchar())!=EOF);//EOF=Ctrl+c

a jak psal Richard - forum.builder.cz je jistejsi
2Mike
>proč bych to jako měl pověsit na hřebík? ...pokud myslíš ten jeden zklykatělý řádek, tak neboj - pač to tak v programu nemám ;-)

2Richard
>o nekonečné smyčce taky vím, ale díval ses někdy jak zatěžuje procesor? :D

2spook
>dík to jsem potřeboval
>o nekonečné smyčce taky vím, ale díval ses někdy jak zatěžuje procesor? :D

nechci se vám míchat do rozhovoru, ale toto jsi asi moc nepochopil. Nechci nikoho nijak napadat, ale v momentě, kdy nevím jak funguje volání fce nebo while() je naprosto zbytečné přemýšlet o optimalizaci. Tedy kódu, který je šetrnější k výpočetním zdrojům.

Btw myslíš že
while (1) { /* nekonečno*/ }

je na tom hůř jak
void main() { /* nekonečno */ main(); }
?

Taky vidím volání main() z těla programu poprvé. A to už jsem toho viděl dost.

Nenech se odradit, jdi do C. :-D
K odpovědi:
isdigit() ověřuje jestli je daný ZNAK číslice. Zkus najít nějakou fci, která číslo ověří. Každý kompilátor to má, podle mě, jinak, takže hledej. Nebo si napiš vlastní fci na ověření čísla. Není to tak složité, aspoň pokud budeš požadovat prosté desetinné číslo.
MzM: nechci se michat do rozhovoru, ale overovani cisla NENI veci kompilatoru
Mike, pravda, to je věc knihoven, omlouvám se za dezinformaci. Kompilátorem jsem označil celý ten humbuk kolem překladu kódů, kam bezpochyby patří i std knihovny.
mno...
záleží na tom, co vlastně chceš.
jestliže chceš ověřit, zda ti zadal někdo číslo nebo nikoli, stačí udělat komparaci jestli (r != 0), popřípadě jestli scanf vrátil 1, nebo něco jiného. Viz specifikace. Takto lze dělat hromadu dalších srovnání. Mám zkušenost, že se nevyplácí brát data ze std. vstupu přímo, ale přes fci getline. (což je rozšíření gnu, takže na widlích to budeš muset doprogramovat). Je to z toho důvodu, že fce getline, jak napovídá její název, nakopíruje řádek do bufferu. Jinak pro získávání čísel se dá použít ještě strtold, strtod, atof atd....

int len;
char *buff = NULL; //NULL důležité !

getline(&buff, &len; stdin);
sscanf(buff, "%lf", &r);

Reference:
http://www.pretel.cz/cgi-bin/man/man2html?query=getline
http://www.pretel.cz/cgi-bin/man/man2html?query=scanf