Názory k článku
Programovací jazyk Forth a zásobníkové procesory (9)
wake (neregistrovaný)
13. 3. 2005 8:58
Nový
scanf
celé vlákno
scanf AFAIK nic nealokuje, promenne, do kterych se hodnoty ukladaji se predavaji pomoci pointeru v paramlistu
tisnik (neregistrovaný)
13. 3. 2005 17:06
Nový
Re: scanf
celé vlákno
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.
wake (neregistrovaný)
13. 3. 2005 21:45
Nový
Re: scanf
celé vlákno
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 !! ;););)
14. 3. 2005 8:28
Nový
Re: scanf
celé vlákno
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].
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].
wake (neregistrovaný)
14. 3. 2005 18:19
Nový
Re: scanf
celé vlákno
...protoze samozrejme sizeof(char) tam vraci jednicku (coz je IMHO spatne). - snad mi nebudete argumentovat chybou prekladace ? ;)
wake (neregistrovaný)
14. 3. 2005 18:23
Nový
Re: scanf
celé vlákno
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). ;);)
tisnik (neregistrovaný)
15. 3. 2005 18:19
Nový
Re: scanf
celé vlákno
Ano rekl bych to s nadsazkou takhle: C-cko me zivi a Forth bavi :-)))
wake (neregistrovaný)
16. 3. 2005 8:29
Nový
Re: scanf
celé vlákno
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... ? ;) ;)

