C-ben hogyan lenne lehetséges karaktereket bekérni a billentyűzetről FÜGGVÉNYEK használata NÉLKÜL?
Az a feladat, hogy C-ben karaktereket olvassak be a billentyűzetről, a "szokásos módon" : valahogy el kell érnem, hogy a program "várakozó" státuszba helyezze magát, hagyja, hogy én a parancssoros ablakon keresztül a bemeneti bufferbe (lényegében az stdin) írjak, majd onnét olvassa vissza az értékeket.
Utóbbit már meg tudom csinálni pointeraritmetikával, hogy utólag visszaolvastassam azokat a bájtokat (pl. egy tömbbe), amiket a billentyűzetről adtam meg lényegében, DE azt nem tudom, hogy hogyan lehet elérni, hogy adott ponton lehessen parancssorosan billentyűzetről karaktereket bevinni a billentyűpufferbe.
Még egyszer jelzem, FONTOS, hogy NEM HASZNÁLHATOK előre beépített FÜGGVÉNYEKET - pl.: getchar(), getc(), getch(), fgetc(), gets(), fgets(), fscanf(), scanf(), stb... ezek közül SEMMIT SEM HASZNÁLHATOK, semmilyen beépített, vagy headerben leírt függvényt, csak kulcsszavakat, változókat, tömböt, stb. függvényt nem, LEGFÖLJEBB inline-assembly kódtagokat.
Valakinek van valami ötlete? - (azon kívül, hogy van aki szerint nem lehet -><- ELVILEG LEHET, csak ÉN nem tudom, hogyan)
>(
Akkor meg nem értem, hogy ez a könyv miért írja azt, hogy a függvények nem a szabvány és a fordító részei, hanem a fejlesztői környezettel együtt jönnek??? : [link]
Másfelől logikus is, mert akkor miért kellenének a header és a lib fájlok?
És amúgy bátyám egyetemre jár - én csak OKJ-ra :/ - és ott is mindig azt verték a fejébe, hogy az olyan függvények, mint a getch(), memcpy(), stb. csak a KVÁZI szabvány részei, az igazi szabványba nem tartoznak bele.
Most akkor őszíntén, mi az igazság??? =<
"The standard headers are
<assert.h>
<complex.h>
<ctype.h>
<errno.h>
<fenv.h>
<float.h>
<inttypes.h>
<iso646.h>
<limits.h>
<locale.h>
<math.h>
<setjmp.h>
<signal.h>
<stdarg.h>
<stdbool.h>
<stddef.h>
<stdint.h>
<stdio.h>
<stdlib.h>
<string.h>
<tgmath.h>
<time.h>
<wchar.h>
<wctype.h>"
Ez van a draft-ban. Nekem ennyi elég.
Te meg gyorsan hagyd ott ezt a kurzust és iratkozz be valami egyetemre..
Na jó, de akkor legalább azt mondjátok meg : Most dobjam ki azt a rohadt könyvet, vagy akkor mi van??!! >( Mert elvileg azt ajánlják az egyetemen is, ezért gondoltam, hogy OKJ-hez is kölcsönkérem ismerőstöl. És az meg leírja, hogy függvény nuku. Az csak egy luxus.
+ weben is van, aki ezt mondja, magukat függetlennek mondó oldalak meg szintén azt írják, hogy a cégek által implementált könyvtárak (stdio.h, stb) kvázi szabványok (ld.: [link]
Amúgy meg sajna azért lett ez a kurzus, mert egyetemhez síkhülye vagyok, de valamiből majd meg kell élni. :( Ez van.
"És az meg leírja, hogy függvény nuku. Az csak egy luxus."
Nyilván, C-ben a függvény egy luxus. Az igazi programozók annyiból oldanak meg mindent, hogy
int x = 1 + 1;
Ez olyan égbekiáltó baromság, hogy "luxus". Pont ez a lényege az egésznek, hogy ahol van C runtime library, ott működni fognak ezek. Ahol meg nincs, ott nem nagyon van értelme olyan feladatot adni, hogy "írd ki konzolra", meg "olvass be billentyűzetről". Miről, b**meg?. Nincs is.
Oké, de akkor mi van, és miért jó, hogy csak annyi van, ami meg több, az az oktatásban tiltott? Ezt nem vágom.
Meg azt nem, hogy akkor azok a C runtime library-k most miből épülnek fel? Miben írták őket? Assembly-ben? Mert ha igen, akkor meg mitől több a C? (ennyi erővel mondhatnám, hogy csak egy kiegészítés az assembly-hez)
"Az igazi programozók annyiból oldanak meg mindent, hogy
int x = 1 + 1;"
Nyílván ilyesmi még az én fejembe se fordult meg, pedig most már nagy a kavarodás ott a sok herce-hurcá-tól.
Mi úgy tanultuk hogy a legalacsonyabb szinten a központi feldolgozóegységnek (CPU) kell huzalozott logikával implementálnia azokat az elemi műveleteket, amitől az adott PC a gyakorlatban univerzális gép, és adott feladatkörökön belül, azokból a CPU szintű elemi műveletekből, minden felvetődő algoritmizálható problémára a megoldás felépíthető.
Továbbá az ált össze eddig, hogy gépi szintű programozásnál - a program bináris/hexadecimális számokkal való felirogatásával - ezeket az elemi műveleteket hívjuk meg, esetlegesen operátorokkal. Ezen felüli következő szint az assembly, ahhol a számok felirogatása helyett adtak egy determinisztikusan, a bináris felirogatásra oda-vissza fordítható emberközeli struktúrát, tehát pl. az adott CPU utasításokat és az operandusokat nem hexaértékekkel kell mind felírni, hanem mnemonikonokkal (add, sub, xor, stb.), decimális számokkal, vesszővel elválasztva, olvasható címekkel, stb.
És efölött van egy újabb szintel a C, mint magas szintű programozási nyelv, nem?
Eddig jó? - vagy tüzelhetem az eddigi erről szóló jegyzeteimet is?
Mert ha igen, akkor logikusnak hatna, hogy amit az assembly tud, azt minimum tudja a C is.
De akkor onnét hova tűntek pl. a BIOS-os megszakításhívások??? Mert hogy most jutottam el odáig, hogy abból ki tudnék indulni, de ennek a C-ben hűlt helyét találom.
?????
Nézd visszafejtheted akár a C-s libraryt és abban meg van írva assembly-ben ami neked kell. Értelme viszont nincs, a C program hordozható az assembly meg nem. Ha C-ben programozol azt azért csinálod, mert nem akarsz assembly-ben programozni. Hülyeség C-ben egész assembly programot írni, ez kiegészítésre van, ha nem érsz el valami nagyon szükségeset C-ből akkor használod. Ez a találjuk fel újra a kereket megközelítés.
Engem egyszer akartak rávenni az assembly programozásra, akkor is C-ben írtam meg és visszafejtettem. Gyorsabb volt megírni és jobb lett a tárgykód.
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!