我有这段C代码
#include"stdio.h"
main()
{
int x;
char c;
for(x=1;(c=getchar())!=EOF;printf("%d ",x++));
}
它将x从1打印到n,其中n是getchar()从标准输入中获取的第n个字符。
对于任何正常输入,例如 - single char'a',它会读取2个字符'a'和'\ n'。所以计数是2.我明白了。
但是,当我从键盘按PgUp或PgDn时,终端有“^ [[5~”或“^ [[6~”字符流,所以输出计数应为6。
5来自“^ [[5~”,1来自'\ n'终结者。
但计数只有5,那么究竟发生了什么? 怎么^ [[5~是4个字符?
我认为'〜'可能会被视为哨兵角色或其他东西,但如果我提供“1~”则数量为3。
友情提示 - 我有被阻止再被问的危险。我搜索了答案,却找不到答案。如果您认为必须删除此qustion,请在评论中告诉我。
答案 0 :(得分:1)
插入符号(^
)传统上用于打印ASCII控制字符,这些字符没有标准的可视化表示。 ^[
是单个字符ESC
(0x1b)。
作为备注,您可以打印出您阅读的每个字符的数值,以查看是否有任何意外(在这种情况下,您会发现不匹配的低值)显示)。