考虑此帖子 What is EOF in the C programming language?
答案是EOF
(Ctrl-D)导致getchar
返回-1
getchar
使用与上面链接相同的代码返回10?getchar
变成静态预定义数字?答案 0 :(得分:3)
Ctrl-J是换行控制字符的快捷方式,具有字符代码10. Here是包含其他控制字符的页面
我此时不知道为什么Ctrl-M(ASCII值13)返回10但是假设它是由于它在功能上与换行符相似。
EOF返回-1的原因是因为在大多数系统上它的值为-1。
其他一些定义的字符:
Ctrl-G:7
Ctrl-I:9
...
Ctrl-V:22
答案 1 :(得分:1)
stdin
通常采用文字模式。在文本模式下读/写时,每个操作系统发生有关行结尾的各种转换。 Crtl-M就是其中之一 - 它被转换为10.如果IO处于二进制模式,则不会进行转换。
控制台将各种键盘组合映射到各种char
和动作(如Ctrl-D - > EOF)。创建的各种char
肯定包含大多数值0到127.由于这些值通常映射到ASCII,前32个值(Ctrl- @,CTRL-A,CTRl-B,... .ctrl-_),它们可能没有图形表示
注意:请注意在getchar()
返回EOF
后再次调用{1}}时返回的内容。期望它能够立即再次返回EOF
,而无需等待任何额外的按键操作。 (Ctrl-D)设置条件,而不是char。