Article View: be.comp.programming
Article #13245Re: invoer zonder enter in C
From: Hugo Marien
Date: Wed, 15 Aug 2001 15:40
Date: Wed, 15 Aug 2001 15:40
71 lines
3086 bytes
3086 bytes
Hallo,
Gemakkelijkste oplossing:
int ch;
if (!(ch = getch ())) ch = getch () + 256;
Levert in ch de ascii code if ch < 256 anders speciale toetsen (F1-F12,
ALT-A -ALT-Z, cursor Links, cursor rechts enz.)
Hugo
"Staf Wagemakers" <stafwag@f2s.com> wrote in message
news:slrn9nilul.1dl.stafwag@freeware.sam.be...
> In article <mfae7.52589$ye.2592364@afrodite.telenet-ops.be>, Thomas Raes
wrote:
> > Hallo allemaal,
> > Ik leer wat programmeren in C in mij vrije tijd (zelfstudie).
> > Nu zou ik graag in een programma de input van de gebruiker willen
gebruiken
> > (1 karakter) zonder dat de gebruiker op enter moet duwen.
> > (Het programma moet blijven doorlopen als de gebruiker geen toets
induwt.)
> > Ik heb het al scanf() en getchar() geprobeerd maar deze functies wachten
> > altijd op enter voordat ze stoppen.
> >
>
> Er bestaan geen echte standaard C functies om een enkel karakter in te
lezen,
> als je een Unix console prgramma wil schrijven kan hiervoor de (n)curses
> library gebruiken. Linux Programming Guide ( te downloaden op
> http://www.linuxdoc.org ) beschrijft ncurses vrij uitgebreid.
>
> beneden vind je een voorbeeld dat karakter per karakter van het
toetsenbord
> inleest met getch() curses functie. De functie cbreak zorgt ervoor er
karakter
> per karakter gelezen wordt. Met nocbreak() wordt er gewacht op '\n'.
>
> #include <ncurses.h>
> int main()
> {
> int c;
> if (!initscr()) {
> fprintf(stderr,"initscr() failed\n");
> exit(1);
> }
> keypad(stdscr,TRUE);
> nl();
> cbreak();
> /* noecho(); */
> scrollok(stdscr,TRUE);
> addstr("Type q to quit\n");
> do {
> c=getch();
> switch (c) {
> case KEY_F(3): printw("You pressed F3\n");break;
> case 2 : printw("You pressed c-b\n");break;
> }
> refresh();
> } while ((c!='q')&&(c!=KEY_F(10)));
> endwin();
> }
>
>
> --
> Staf Wagemakers
>
> email : stafwag@f2s.com
> homepage : http://www.stafwag.f2s.com
Technical Details
Message-ID:
<4Kwe7.728$6x5.227471@afrodite.telenet-ops.be>Path:
arc1-ca.pugleaf.net!archiver1.google.com!newsfeed.google.com!sn-xit-02!supernews.com!news.tele.dk!small.news.tele.dk!195.238.2.15!skynet.be!skynet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mailReferences:
<mfae7.52589$ye.2592364@afrodite.telenet-ops.be> <slrn9nilul.1dl.stafwag@freeware.sam.be>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit X-Google-Thread: fcea4,d04ac2edd4cf6c55 X-Google-Attributes: gidfcea4,public X-Google-ArrivalTime: 2001-08-15 08:40:55 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!newsfeed.google.com!sn-xit-02!supernews.com!news.tele.dk!small.news.tele.dk!195.238.2.15!skynet.be!skynet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mail From: "Hugo Marien" <h.marien@pandora.be> Newsgroups: be.comp.programming References: <mfae7.52589$ye.2592364@afrodite.telenet-ops.be> <slrn9nilul.1dl.stafwag@freeware.sam.be> Subject: Re: invoer zonder enter in C Lines: 73 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 5.50.4522.1200 X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4522.1200 Message-ID: <4Kwe7.728$6x5.227471@afrodite.telenet-ops.be> Date: Wed, 15 Aug 2001 15:40:48 GMT NNTP-Posting-Host: 213.224.165.243 X-Complaints-To: abuse@pandora.be X-Trace: afrodite.telenet-ops.be 997890048 213.224.165.243 (Wed, 15 Aug 2001 17:40:48 MET DST) NNTP-Posting-Date: Wed, 15 Aug 2001 17:40:48 MET DST Organization: Telenet Internet