davidd@wolf.cs.washington.edu (David Doll) (12/31/90)
Hello,
Inside of some "C" code, I want to be able to get a single char(or
number) from the user without them having to type a carriage return. For
example:
crunch,crunch, etc.
prompt user for some letter, have them hit "y" and then more
crunch, etc.
Heres a segment of code I tried:
--------------------------------------------------------
#include <stdio.h>
#include <curses.h>
/*
to compile: cc -o run test.c -lcurses -ltermcap
*/
main()
{
int ch;
int i;
cbreak();
for (i=0; i<10; i++){
ch=getchar();
putchar(ch+1);
putchar('\n');
}
nocbreak();
}
-------------------------------------------------------
but when I run "run" it accepts the char but at the end (at the end of the for
loop), it frezzes up the keyboard...I'm sure this is simple but I'm missing
what's in front of me :) Could you e-mail me and I'll post a summary if
theres interest. Thanks for the help and wisdom, I appriciate it.
--
David Doll
Computer Science Dept.
University of Washington
Seattle, WA 98195
M/S: FR-35
davidd@wolf.cs.washington.edumike@bria.AIX (Michael Stefanik) (01/01/91)
In article <DAVIDD.90Dec30195511@wolf.cs.washington.edu>, davidd@wolf.cs.washington.edu (David Doll) writes: > Hello, > Inside of some "C" code, I want to be able to get a single char(or > number) from the user without them having to type a carriage return. I'm assuming that you have the termio stuff, but here is a little ditty to get a single character from the keyboard: #include <stdio.h> #include <termio.h> int getch() { struct termio old, new; char c; int ret; ioctl(0,TCGETA,&old); memcpy(&new,&old,sizeof(struct termio)); new.c_lflag &= ~ICANON; new.c_lflag &= ~ECHO; new.c_cc[VMIN] = 1; new.c_cc[VTIME] = 0; ioctl(0,TCSETA,&new); if ( read(0,&c,1) != 1 ) ret = EOF; else ret = (int)c; ioctl(0,TCSETA,&old); return(ret); } ----------------------------------------------------------------------------- Michael Stefanik, Systems Engineer (JOAT), Briareus Corporation UUCP: ...!uunet!bria!mike "If it was hard to code, it should be harder to use!"