想知道如何测试保存在char数组中的输入,如...
char input[INPUT_SIZE];
并使用
fgets(input,INPUT_SIZE,stdin);
要获取用户的输入,但想知道我如何使用if语句来测试用户输入是否是例如 ctrl + d 或任何 ctrl + anykey?
我尝试使用像这样的ascci值..是一个测试ctrl d的例子
if(result = 'EOT') {printf("EOT");}
结果是一个char数组。
答案 0 :(得分:0)
你只能测试 Ctrl + d 作为你的阅读回复EOF
,请参阅阅读手册以获得更多信息,但一般情况下返回0.同样适用于 Ctrl + c ,因为两者都向您的程序发送信号。
对于其他 Ctrl +组合键,它在很大程度上取决于您的系统。
在Linux上的Linux Ctrl + a 和 Ctrl + e 或者emacs会将你带到分别是该行的开头或结尾/开头。
最容易得到你想要的是使用read,unbuffered(参见ioctl)和8字节缓冲区编写一个小程序,并在每次退出读取时转储读取的字节。
int nbr;
int i;
char buf[8];
nbr = 42;
while (nbr > 0)
{
nbr = read(0, buf, 8);
i = 0;
while (i < nbr)
printf("%x ", buf[i++]);
printf("\n");
}
您将获得 ctrl +键接收序列的十六进制版本。可能以\ ESC或\ 033(转义字符序列)开头。例如,向上箭头键看起来像\033[A