Typy vstupov

Programovacie jazyky, rady, poradňa...
Fata! ChaoS
Star
Star
Používateľov profilový obrázok
Príspevky: 650
Registrovaný: 12 apr 2006, 20:23
Bydlisko: Tvrdošovce
Kontaktovať používateľa:

Typy vstupov

Príspevok od používateľa Fata! ChaoS »

Ahojte, ako by sa dal načítať nejaký reťazec, tak aby sa ukončilo načítavaní po zadaní nejakého znaku? Ale bez použití neštandartných knižníc, t.j. getch() nie.
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Príspevok od používateľa BX »

mohol by si toho napisat viac. Neviem ci som pochopil spravne a tak radsej neodpoviem :D
A asi to chces v C ze? Aj to by sa hodilo napisat :)
Fata! ChaoS
Star
Star
Používateľov profilový obrázok
Príspevky: 650
Registrovaný: 12 apr 2006, 20:23
Bydlisko: Tvrdošovce
Kontaktovať používateľa:

Príspevok od používateľa Fata! ChaoS »

Sorry ponáhlal som sa, tak som na pár vecí zabudol, no hej, má to byť v C, ale nebudeš vedieť tak to môže byť aj v pascale, v tom som to ešte neskúšal, najprv to skúsim v C-čku.
Takže program od teba pýtať nejaký vstup a záps vstpu sa preruší vtedy keď sa zatlačí nejaké písmeno, či znak, čiže nie pomocou enteru ukončím vstup, ale pomocou nejakého znaku, takže pomocou cin sa ti asi nedá, ale tiež sa nesmie použiť neštandartná knižnica.
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Príspevok od používateľa BX »

No v pascale som vykuchtil nieco taketo:

Kód: Vybrať všetko

 repeat
     key:=readkey;
     write(key);
until(key='s');
readkey ale neviem ako je v C a ci na to treba nejaku megakniznicu. Ale myslim, ze nie... ci? :D
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Štandardná funkcia, ktorá by načítavala jediný znak z terminálu v C neexistuje (keďže veľa terminálov posiela vstup až po stlačení Enter).
feromakovi
Expert
Expert
Príspevky: 165
Registrovaný: 24 okt 2008, 14:16
Bydlisko: Bánovce nad Bebravou

odpoveď

Príspevok od používateľa feromakovi »

zdravím, pochopil som že ide o C
daj
#include<conio.h> je to štandardná knižnica
.
.
.
a príkaz je ch=getche();
vlastne ti to bude čítať znaky stlačené na klávesnici naj v nejakom cykle a môžeš ich napr hneď prideľovať do pamäte.
keby si to chcel tak aby sa tie znaky nevypisovali na obrazovku malo by to byť cez ch=getch();

myslím že to by mala byť tvoja odpoveď a teda ak išlo o C.
Fata! ChaoS
Star
Star
Používateľov profilový obrázok
Príspevky: 650
Registrovaný: 12 apr 2006, 20:23
Bydlisko: Tvrdošovce
Kontaktovať používateľa:

Príspevok od používateľa Fata! ChaoS »

LOL chalan, díky za ochotu, lae prečítaj si môj prvý príspevok, že getch()
nie. A ináč conio.h nie je štandartná knižnica, podľa mojich vedomostí. :)
Ale ináč má asi audiotrack pravdu, lebo sa to asi bez nadštandartných knižníc nedá :) Lebo všade potrebujú enter na ukončenie.

Ináč ano getch() by fungoval, ale to je v conio knižnici.
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Príspevok od používateľa BX »

Nepisal si, ze v pascale to nevadi? :)
johny3212
Star
Star
Používateľov profilový obrázok
Príspevky: 532
Registrovaný: 17 feb 2008, 19:56
Bydlisko: Terchova
Kontaktovať používateľa:

Príspevok od používateľa johny3212 »

naozoj nechapem co chces, sak hod na koniec neaky cyklus ktory caka na nacitanie neakych klaves, ktore mu zadas do podmienky a po stlaceni tej klavesy sa cyklus ukonci. Ak neces nieco taketo tak vazne nechapem "0
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Príspevok od používateľa BX »

no tak ten cyklus napis :P Jemu ide o to, ze tu klavesu len stlaci, zatial tu padli riesenia, ktore vyzaduju aj stlacenie enteru ;)
johny3212
Star
Star
Používateľov profilový obrázok
Príspevky: 532
Registrovaný: 17 feb 2008, 19:56
Bydlisko: Terchova
Kontaktovať používateľa:

Príspevok od používateľa johny3212 »

no myslel som nieco taketo, ale problem moze byt, ze musis pouzit neaku standardnu kniznicu, ktora inicializuje klavesy, alebo ked som ja necel pouzit standardnu incializaciu klaves , tak som si vytvoril sruktury a nahadzal tam vlastne nazvy klaves a pridelil im hodnoty ASCI kodov podla normy a potom ete doriesit ako ich budes incializovat hardverovo.
Ak to nebudes vediet, tak musis pouzit neaku standardnu kniznicu napr.
#include <conio.h>, ktora vie pracovat z klavesami.

a principialne som myslel nieco taketo potom, nepotrebujes tam ziadny standardny getnico vstup a vystup ani tlacitko enter.

Kód: Vybrať všetko

do  {
 if(kbhit())        // Ak je nieco stlacene                   
         { ch = getch();    //tak to nacita do ch                    
              
             switch(ch)                           
            {
             case 0x00:
             return;
             break;

             case '1':
             return;
             break;

             default: printf("%c",ch);
             }

         }
      } while(ch != 27);   
ale asi namiesto switch tam bude lepsie dat if() , kde budes testovat podminku, if() ma troska odlisne vlastnosti. pri if by ti to malo stale behat do okola a cakat na drzanie klavasy a potom ukonci cyklus a switch jednorazovo zreaguje na stlacenie a dost a nesplna viac podminku az na pustenie a dalsie stlacenie zreaguje, no neviem ci si ma pochopil :).
Ten program je iba principialny, zalezi ako vyriesis incializaciu klaves, ci pouzijes standardnu kniznicu, abo si taky frajo, ze si to nakodis sam :).
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Príspevok od používateľa BX »

Fata! ChaoS napísal:LOL chalan, díky za ochotu, lae prečítaj si môj prvý príspevok, že getch()
nie. A ináč conio.h nie je štandartná knižnica, podľa mojich vedomostí. :)
Ale ináč má asi audiotrack pravdu, lebo sa to asi bez nadštandartných knižníc nedá :) Lebo všade potrebujú enter na ukončenie.

Ináč ano getch() by fungoval, ale to je v conio knižnici.
;)
johny3212
Star
Star
Používateľov profilový obrázok
Príspevky: 532
Registrovaný: 17 feb 2008, 19:56
Bydlisko: Terchova
Kontaktovať používateľa:

Príspevok od používateľa johny3212 »

alebo toto som tet pogooglil, ako moze detekovat klavesu

http://ap.urpi.fei.stuba.sk/ap/sources/ ... loha29.htm
Fata! ChaoS
Star
Star
Používateľov profilový obrázok
Príspevky: 650
Registrovaný: 12 apr 2006, 20:23
Bydlisko: Tvrdošovce
Kontaktovať používateľa:

Príspevok od používateľa Fata! ChaoS »

Johny, ale písal som už viackrát, že bez použiatia knižnice conio.h, ale neva už kašli nato, už to nepotrebujem. Ale dám ti K+ za nesmiernú snahu :) a za rozbehnutie diskusie :) :p
skkiller2
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 95
Registrovaný: 06 dec 2008, 11:23
Kontaktovať používateľa:

Príspevok od používateľa skkiller2 »

ja som našiel cin.getline sice je to c++ ..
johny3212
Star
Star
Používateľov profilový obrázok
Príspevky: 532
Registrovaný: 17 feb 2008, 19:56
Bydlisko: Terchova
Kontaktovať používateľa:

Príspevok od používateľa johny3212 »

conio.h to ani nemusis pouzit, je len na tebe ako incializujes klavesy :), "c" je v tom krasne, za si mozes vsetko spavit saam :), ak vies :)
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Príspevok od používateľa BX »

skkiller2 napísal:ja som našiel cin.getline sice je to c++ ..
Ako presne mu s tymto pomoze cin.getline?
getline sa pokial viem puziva na vstup retazca, sposobom cin.getline(slovo, pocet_znakov) ( napr. cin.getline(slovo, 256) )
A potom zmacknes enter.
;)
Napísať odpoveď