Kezdőoldal » Számítástechnika » Programozás » C-ben hogyan lenne lehetséges...

C-ben hogyan lenne lehetséges karaktereket bekérni a billentyűzetről FÜGGVÉNYEK használata NÉLKÜL?

Figyelt kérdés

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)



2014. nov. 26. 13:43
1 2 3 4
 11/32 A kérdező kommentje:

>(

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??? =<

2014. nov. 27. 17:08
 12/32 A kérdező kommentje:
Ja, és a múltkor egy weboldalon is, ahhol a szabványt tárgyalták - és aránylag szakmailag korrektnek is tűntek a dolgok úgy ránézésre -, ott is írták, hogy a függvények nem az igazi szabvány részei, csak a hétköznapi életben annyira megszoktuk őket, hogy sokan annak tekintik.
2014. nov. 27. 17:11
 13/32 anonim ***** válasza:

"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..

2014. nov. 27. 17:52
Hasznos számodra ez a válasz?
 14/32 uno20001 ***** válasza:
Ahogy a #13 is írta a standard header-ek a szabvány részei. A <windows.h> például nem része a szabványnak sok másikkal egyetemben.
2014. nov. 27. 18:18
Hasznos számodra ez a válasz?
 15/32 A kérdező kommentje:

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.

2014. nov. 27. 19:24
 16/32 anonim ***** válasza:

"É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.

2014. nov. 27. 19:39
Hasznos számodra ez a válasz?
 17/32 A kérdező kommentje:

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)

2014. nov. 27. 20:30
 18/32 A kérdező kommentje:

"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.


?????

2014. nov. 27. 20:48
 19/32 anonim ***** válasza:

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.

2014. nov. 27. 21:40
Hasznos számodra ez a válasz?
 20/32 A kérdező kommentje:
Oké, ezt vágom... De azt nem értem, és ha tudod, légy szíves ezt írd meg, hogy amit az assembly fordító tud (pl. megszakítások hívása (ld.: int 16h;), portokra való adatkiküldés), azt a C-ből miért érte meg kihagyni??
2014. nov. 27. 21:52
1 2 3 4

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!