如何防止c中转义字符的回音
基本上,我希望使用getchar()扫描输入,如果用户输入诸如ESC或箭头键之类的字符,这不应该在屏幕上出现,但我仍然希望处理该输入。请参阅man for ascii(7):如何防止c中转义字符的回音,c,linux,escaping,echo,C,Linux,Escaping,Echo,基本上,我希望使用getchar()扫描输入,如果用户输入诸如ESC或箭头键之类的字符,这不应该在屏幕上出现,但我仍然希望处理该输入。请参阅man for ascii(7): 这是转义字符的代码。让您开始学习。基本上,您需要关闭ECHO并将终端设置为无缓冲模式。然后必须过滤ANSI转义序列。下面的例子已经在OSX中进行了测试,但可能在Linux中也可以使用 #include <termios.h> #include <stdio.h> int main(int argc
这是转义字符的代码。让您开始学习。基本上,您需要关闭ECHO并将终端设置为无缓冲模式。然后必须过滤ANSI转义序列。下面的例子已经在OSX中进行了测试,但可能在Linux中也可以使用
#include <termios.h>
#include <stdio.h>
int main(int argc, char **argv)
{
int c,escseen=0,code;
struct termios t;
tcgetattr(0, &t);
t.c_lflag &= ~(ECHO|ICANON);
tcsetattr(0, TCSANOW, &t);
for(;;)
{
c=getchar();
if(c>=32)
{
if(escseen)
if(c=='[')
{
code=getchar();
/* do something with the esc code */
continue;
}
putchar(c);
escseen=0;
}
else
if(c==27)
{
escseen=1;
}
}
}
#包括
#包括
int main(int argc,字符**argv)
{
int c,escseen=0,代码;
结构术语t;
tcgetattr(0,&t);
t、 c|lflag&=~(ECHO | ICANON);
tcsetattr(0、TCSANOW和t);
对于(;;)
{
c=getchar();
如果(c>=32)
{
如果(请参阅)
如果(c=='[')
{
code=getchar();
/*对esc代码做些什么*/
持续
}
普查尔(c);
escseed=0;
}
其他的
如果(c==27)
{
escseen=1;
}
}
}
#include <termios.h>
#include <stdio.h>
int main(int argc, char **argv)
{
int c,escseen=0,code;
struct termios t;
tcgetattr(0, &t);
t.c_lflag &= ~(ECHO|ICANON);
tcsetattr(0, TCSANOW, &t);
for(;;)
{
c=getchar();
if(c>=32)
{
if(escseen)
if(c=='[')
{
code=getchar();
/* do something with the esc code */
continue;
}
putchar(c);
escseen=0;
}
else
if(c==27)
{
escseen=1;
}
}
}