To ano, vysledne (zparsovane a prevedene) hodnoty se ulozi do pametovych oblasti predanych funkci scanf(). Ale kam se uklada retezec, ktery uzivatel zadal? Vite to? Ve Forthu (tom puvodnim, ktery "pod sebou" uz nic nema) je to do TIB, v C-cku na nejake tajemne misto s blize neurcenou kapacitou, ktere zavisi na prekladaci, OS atd.
hm... misto nebyva tajemne, ale implementacne zavisle ;) a vetsinou i presne dane, stejne jako jeho "blize neurcena" kapacita, oboje zavisi na tom, na jaky konec ceho je pripojen standardni vstup (a ze to nemusi byt jenom klavesnice nemusim vysvetlovat, ze... ;) a to ze to neni ve specifikaci standartni knihovny umoznuje napsat scanf a nestarat se o ten druhy konec ;) (ale mezi nami - scanf je paskvil, ktery mezi slusnymi programatory nema co delat - "...pointer to buffer which must be bug enough to hold scanned data...") overflow HEIL !! ;););)
Implementacne zavisle nebo tajemne - nekdy to vyjde nastejno, protoze nevite, kde Vas program pobezi :-).
Ja jsem se napriklad nestacil divit, kdyz jsem zjistil, ze na nekterych procesorech DSP je pri mallocu zadana hodnota chapana jako pocet charu a ne jako pocet bytu. Ze je to stejne? Nikoli, to DSPcko neumelo vubec pracovat s byty, proto tam platilo, ze char jsou dva byty. A vy nemate sanci to rozumnym zpusobem programove zjistit, protoze samozrejme sizeof(char) tam vraci jednicku (coz je IMHO spatne).
Kdyz uz se teda bavime o prenositelnosti, ve Forthu je to docela tragedie, prekladace, ktere jsou ANS-Forth kompatibilni aby clovek pohledal :-)))
Scanf() je opravdu dost nebezpecna funkce, snad jeste vic nez gets() [gets() totiz zadny rozumny programator ve svem programu nemuze pouzit].
btw. no flame - forth je dobry na neco (napr. intelektualni zabavu... nebo psani OS do mobilu) a C je dobre na neco (zpravidla) uplne jineho. (napr. intelektualni zabavu... nebo psani OS do mobilu). ;);)
ehm... znate tohle ? IMHO je to pekny kousek zelizka, a jedine, co brani zalinuxovani je absence telefonu, ktery je ve WINCE verzi implementovan na DSC (Digital Signal Coprocessor), nebot familiar pro danou platformu naaaadherne beha. DSP... forth... opensource... ? ;) ;)