gpt4 book ai didi

c - 为什么 PgUp(^[[5~) 或 PgDn(^[[6~) 输入在从 getchar 获取时被认为是 4 个字符而不是 5 个字符?

转载 作者:太空宇宙 更新时间:2023-11-04 03:33:15 25 4
gpt4 key购买 nike

我有这段C代码

#include"stdio.h"

main()
{
int x;
char c;
for(x=1;(c=getchar())!=EOF;printf("%d ",x++));
}

它打印 x 从到 1 到 n,其中 n 是 getchar() 从标准输入中获取的第 n 个字符。

对于任何正常输入,如 - 单个字符“a”,它读取 2 个字符“a”和“\n”。所以计数是 2。我明白了。

但是,当我从键盘按下 PgUp 或 PgDn 时,终端有“^[[5~”或“^[[6~”字符流,所以输出计数应该是 6。

5 来自“^[[5~”,1 来自“\n”终止符。

但计数只有 5,那么实际发生了什么?^[[5~怎么是4个字符?

我认为“~”可能被视为哨兵字符或其他东西,但如果我提供“1~”,则计数为 3。

友情提示 - 我有被禁止再提问的危险。我搜索了答案,但找不到。如果您认为必须删除此问题,请在评论中告诉我。

最佳答案

脱字符 (^) 传统上用于打印没有标准视觉表示的 ASCII 控制字符。 ^[ 是单个字符,ESC (0x1b)。

请注意,您可以打印出您阅读的每个字符的数值,看看是否有任何意外(在这种情况下,您会发现与显示不匹配的低值)。

关于c - 为什么 PgUp(^[[5~) 或 PgDn(^[[6~) 输入在从 getchar 获取时被认为是 4 个字符而不是 5 个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34487260/

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