从控制台应用程序读取同步击键

时间:2011-03-02 06:45:32

标签: c windows linux

我想立即从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);
}

3 个答案:

答案 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;
}