C - ctrl +字符的输入测试

时间:2012-03-01 11:09:36

标签: c input comparison control-characters

想知道如何测试保存在char数组中的输入,如...

   char input[INPUT_SIZE];

并使用

fgets(input,INPUT_SIZE,stdin);

要获取用户的输入,但想知道我如何使用if语句来测试用户输入是否是例如 ctrl + d 或任何 ctrl + anykey?

我尝试使用像这样的ascci值..是一个测试ctrl d的例子

  if(result = 'EOT') {printf("EOT");}

结果是一个char数组。

1 个答案:

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