MCP
MCP

Reputation: 4536

Capturing a user's "enter" keystroke in C

I'm starting to learn C now and i'm trying to figure out how I would go about capturing when the user hits "enter." I'm looking particularly at the scanf and getc functions but I'm not quite sure how to go about it. When the user hits enter I want to perform some operations while waiting/watching for him to hit enter again... Is "enter" a new line character coming in from the console? Any advice would be much appreciated!

Upvotes: 2

Views: 3318

Answers (4)

hellork
hellork

Reputation: 420

printf("Hit RETURN to exit"\n");
fflush(stdout);
(void)getchar();

Ref: comp.lang.c FAQ list · Question 19.4b

Upvotes: 1

Imp
Imp

Reputation: 8609

The C language is platform-independent and does not come with any keyboard interaction on its own. As you are writing a console program, it is the console that processes the keyboard input, then passes it to your program as a standard input. The console input/output is usually buffered, so you are not able to react to a single keypress, as the console only sends the input to the program after each line.

However! If you do not demand your console application to be platform-independent, there is a non-standard library <conio.h> in some Windows compilers that has a function called getche();, which does exactly what you want - wait for a single keypress from the console, returning the char that was pressed.

Upvotes: 0

interlude
interlude

Reputation: 853

If you just need the input when user presses enter as input you can use scanf or getchar. Here is an example from cplusplus.com

/* getchar example : typewriter */
#include <stdio.h>

int main ()
{
  char c;
  puts ("Enter text. Include a dot ('.') in a sentence to exit:");
  do {
    c=getchar();
    putchar (c);
  } while (c != '.');
  return 0;
}

This code prints what you entered to stdin (terminal window).

But if you do not want the input ( i know it's really unnecessary and complicated for a new learner) you should use an event handler.

Upvotes: 1

P.P
P.P

Reputation: 121357

You can check the ascii value using fgetc().

while(condition) {
    int c = fgetc(stdin);

    if (c==10) {//Enter key is pressed
    //your action
    }
}

Upvotes: 3

Related Questions