我想立即从windows和linux下用c编写的控制台应用程序中读取每个击键。不幸的是,当按下“enter / return”键时,函数gets(line)只返回一个值。 我正在寻找一个按下按键后立即返回的功能。
目前我的代码看起来像这样:
char cTmp[MAX_LINE];
char line[MAX_LINE];
while( gets(line) != NULL) {
sprintf(cTmp,"Characters entered: %c", line);
puts(cTmp);
}
答案 0 :(得分:2)
你可能正在寻找getch()
。在Windows(至少VC ++)上,它在<conio.h>
中声明。在Linux上它是诅咒的一部分。
答案 1 :(得分:2)
以下代码对我有用。感谢您指点我正确的方向。 http://bytes.com/topic/c/answers/503640-getch-linux
#include <termios.h>
#include <unistd.h>
int mygetch(void)
{
struct termios oldt,
newt;
int ch;
tcgetattr( STDIN_FILENO, &oldt );
newt = oldt;
newt.c_lflag &= ~( ICANON | ECHO );
tcsetattr( STDIN_FILENO, TCSANOW, &newt );
ch = getchar();
tcsetattr( STDIN_FILENO, TCSANOW, &oldt );
return ch;
}
答案 2 :(得分:0)
我认为您正在寻找getchar()
和putchar()
:
#include <stdio.h>
char line[MAX_LINE];
int i = 0;
int c;
while ( (c = putchar(getchar())) != EOF)
{
line[i] =c;
}