当前位置: 技术问答>linux和unix
用read(STDIN_FILENO, &cc, 1)读取输入,如何屏蔽ctrl+键盘输入的乱码?
来源: 互联网 发布时间:2015-09-11
本文导语: 如题, 程序如下: #include #include #include #include #include #include #include #include #include void putC(int c); int readc(void); void prstr(char *as); int main() { char s[1] = {0}; int i = 0; do{ i = readc(); sprintf(s,"%c",i); ...
如题,
程序如下:
#include
#include
#include
#include
#include
#include
#include
#include
#include
void putC(int c);
int readc(void);
void prstr(char *as);
int main()
{
char s[1] = {0};
int i = 0;
do{
i = readc();
sprintf(s,"%c",i);
prstr(s); //测试用
}while(i!='n');
return 0;
}
int readc(void)
{
char cc;
int i = read(STDIN_FILENO, &cc, 1);
if( i != 1)
{
exit(0);
}
return (int)cc;
}
void prstr(char *as)
{
register char *s;
s = as;
while(*s)
putC(*s++);
}
void putC(int c)
{
write(STDERR_FILENO, &c, 1);
}
程序如下:
#include
#include
#include
#include
#include
#include
#include
#include
#include
void putC(int c);
int readc(void);
void prstr(char *as);
int main()
{
char s[1] = {0};
int i = 0;
do{
i = readc();
sprintf(s,"%c",i);
prstr(s); //测试用
}while(i!='n');
return 0;
}
int readc(void)
{
char cc;
int i = read(STDIN_FILENO, &cc, 1);
if( i != 1)
{
exit(0);
}
return (int)cc;
}
void prstr(char *as)
{
register char *s;
s = as;
while(*s)
putC(*s++);
}
void putC(int c)
{
write(STDERR_FILENO, &c, 1);
}
|
是不是可以用signal来屏蔽
|
注册一个SIGNAL函数,处理SIGINT信号,试试看吧(反正CTRL+C可以拦截到)!
|
这个~~~~ctrl+某键的组合有的是终端控制符,有的产生信号,要分别处理的
|
判断是不是ascii码就可以了