【发布时间】:2015-12-28 03:14:30
【问题描述】:
我有这段 C 代码
#include"stdio.h"
main()
{
int x;
char c;
for(x=1;(c=getchar())!=EOF;printf("%d ",x++));
}
它打印从到 1 到 n 的 x,其中 n 是 getchar() 从标准输入中获取的第 n 个字符。
对于任何普通输入,如 - 单个字符 'a',它读取 2 个字符 'a' 和 '\n'。所以计数是 2。我明白了。
但是,当我从键盘按 PgUp 或 PgDn 时,终端有 "^[[5~" 或 "^[[6~" 字符流,所以输出计数应该是 6。
5 来自 "^[[5~" 和 1 来自 '\n' 终止符。
但计数只有 5,那么实际发生了什么? ^[[5~怎么是4个字符?
我认为 '~' 可能被视为标记字符或其他东西,但如果我提供“1~”,则计数为 3。
友情提示 - 我有被阻止再提问的危险。我搜索了答案,但找不到。如果您认为必须删除此问题,请在 cmets 中告诉我。
【问题讨论】:
-
将您的打印更改为
printf("%d %d\n", x++, c);,您将看到发生了什么 -
感谢@MM 指出这一点。现已编辑。
-
非常感谢@M.M 的建议,现在我知道发生了什么。