我正在学习《C 编程语言》,作者:Kernighan 和 Ritchie(第 2 版),第 17 页的练习 1.06
我的问题是为什么每次我输入ctrl-d时,它都会打印“0D”,而不是“0”,我的电脑是iMAC m1芯片。谢谢
#include <stdio.h>
main()
{
printf("%d\n", getchar() != EOF);
}
最佳答案
您的观察结果的原因是,当您键入 Ctrl-D 时,终端会回显 ^D
和 2 个退格键 (BS) 并返回 4
立即地。效果是光标位于屏幕上的 ^
字符上,当 printf
输出 0
和换行符时,0
code> 覆盖 ^
并且换行符转换为 CR+LF,导致光标转到下一行的开头。
您可以修改程序以避免此问题,方法是在 %d
转换之前打印换行符:
#include <stdio.h>
int main(void) {
printf("\n%d\n", getchar() != EOF);
return 0;
}
输出:
^D
0
关于c - 验证表达式 getchar() != EOF 是 0 或 1,ctrl-D 得到 "0D",而不是 "0",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76958943/