[Tips]How to detect “Enter Key” pressed in C/C++?
GOAL
To detect enter key pressed in C/C++ program.
Environment
Windows 10
Visual Studio 2017
Method
Method 1. get char
If you just detect enter key pressed at any time, use getchar() or cin.get() function.
C language
#include <stdio.h>
#include <windows.h> // for Sleep function
int main(void)
{
while(true){
if (getchar() == '\n') {
printf("Enter key is pressed");
Sleep(1000); //wait for check printed message.
break;
}
}
return 0;
}C++
#include <iostream>
using namespace std;
int main() {
while (1) {
if (cin.get() == '\n') {
cout << "Enter key is pressed" << endl;
break;
}
}
return 0;
}Method 2. get line
If you’d like to detect that only enter key is pressed without input another key before enter, use scanf() , fgets() or gets() in C language or getline() in C++
C language
#include <stdio.h>
#include <string.h>
#include <windows.h> // for Sleep function
int main(void)
{
while (1) {
//if (getchar() == '\n') {
char str[32];
gets(str);
if(strcmp(str,"")==0){
printf("Enter key is pressed");
Sleep(1000); //wait for check printed message.
break;
}
}
return 0;
}C++
#include <iostream>
using namespace std;
int main() {
string str;
while (1) {
getline(cin, str);
if (str == "") {
cout << "Enter key is pressed" << endl;
break;
}
}
return 0;
}Method 3. GetKeyState
GetKeyState() is only provided on Windows. You can get the current “state” of the key. It returns 0 when the key is not pressed.
The key code is here.
#include <iostream>
#include <windows.h> // for GetKeyState function
using namespace std;
int main() {
cout << "some process here" << endl;
while (1) {
if (GetKeyState(VK_RETURN) < 0) {
cout << "Enter Key is Pressing" << endl;
}
else if (GetKeyState(VK_ESCAPE) < 0) {
break;
}
}
return 0;
}
not working in function
Thank you for your comment! I’d like some more information.
I tried to define the function to get user input and check if the input is “Enter” only or not. It works well when compiled with g ++..
enterPressTest.cpp
I added another method with GetKeyState() provided on Windows.
It will work well if you’d like to detect the key is pressed before user input is completed.