gpt4 book ai didi

C - ctrl + 字符的输入测试

转载 作者:行者123 更新时间:2023-11-30 18:02:01 25 4
gpt4 key购买 nike

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

   char input[INPUT_SIZE];

并使用

fgets(input,INPUT_SIZE,stdin);

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

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

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

结果也是一个字符数组。

最佳答案

您只能在读取返回 EOF 时测试 Ctrl+d,请参阅您的读取手册以获取更多信息,但通常它返回 0。 Ctrl+c 也是如此,因为两者都向您的程序发送信号。

对于其他 Ctrl+ 组合键,很大程度上取决于您的系统。

在 Linux 上,shell 或 emacs 中的 Ctrl+aCtrl+e 会将您移至分别是行的开头或结尾/开头。

最容易得到你想要的东西是使用读取、无缓冲(参见 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+key 接收序列的十六进制版本。可能以\ESC 或\033(转义字符序列)开头。例如,向上箭头键看起来像 \033[A

关于C - ctrl + 字符的输入测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9515084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com