🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #13236

Re: invoer zonder enter in C

#13236
From: Staf Wagemakers
Date: Tue, 14 Aug 2001 16:55
50 lines
2460 bytes
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: <slrn9nilul.1dl.stafwag@freeware.sam.be>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!newsfeed.google.com!sn-xit-02!supernews.com!newsfeed.direct.ca!look.ca!news.maxwell.syr.edu!bnewspeer01.bru.ops.eu.uu.net!bnewspost00.bru.ops.eu.uu.net!emea.uu.net!news.be.uu.net!not-for-mail
References: <mfae7.52589$ye.2592364@afrodite.telenet-ops.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-14 10:03:22 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!newsfeed.google.com!sn-xit-02!supernews.com!newsfeed.direct.ca!look.ca!news.maxwell.syr.edu!bnewspeer01.bru.ops.eu.uu.net!bnewspost00.bru.ops.eu.uu.net!emea.uu.net!news.be.uu.net!not-for-mail
Newsgroups: be.comp.programming
From: stafwag@f2s.com (Staf Wagemakers)
Subject: Re: invoer zonder enter in C
References: <mfae7.52589$ye.2592364@afrodite.telenet-ops.be>
Organization: Debian GNU/Linux (woody)
Message-ID: <slrn9nilul.1dl.stafwag@freeware.sam.be>
User-Agent: slrn/0.9.7.1 (Linux)
Date: 14 Aug 2001 16:55:17 GMT
Lines: 50
NNTP-Posting-Host: uu212-190-114-162.unknown.uunet.be
X-Trace: 997808117 news.be.uu.net 7117 212.190.114.162
X-Complaints-To: abuse@be.uu.net