gpt4 book ai didi

c - getchar() 调用后 printf 打印额外的 "D"

转载 作者:行者123 更新时间:2023-11-30 15:19:34 25 4
gpt4 key购买 nike

我正在尝试学习“C 编程语言”,但遇到了 printf 和 EOF 字符的一些问题。我正在使用 mac 终端并使用 clang 进行编译。

运行此代码:

#include <stdio.h>

main()
{
int val;
while ((val = getchar()) != EOF)
printf("%d\n", val);
/*val = 5;*/
/*printf("hi\n");*/
/*printf("%d\n", val);*/
printf("%d\n", val);
}

像我期望的那样工作,阻塞直到我输入一个字符然后打印:"*character code*\n10\n" ,除了 ctrl-d ,打印“-1" 然后退出。

取消注释 "val = 5;" 后然而,输入“ctrl-d ”会导致它打印: "5D" .

我搞乱了它,发现第二次打印 val (第三条注释语句)只会导致 one "D": "5D\n5" ,并且在变量之前打印常量(第二个注释语句)会阻止“D”出现:"hi\n5\n5".

我绝对不想要 D,如果有人能解释如何删除它,我将非常感激。

最佳答案

因此,控制台输入会打印您键入的内容。就像您键入字母 A 一样,字母 A 也会被打印出来。 CTRL-D 以 ^D 的形式打印到标准输出。

如果打印出 1 个字符,^ 将被覆盖。如果打印出 2 个字符,^ 和 D 都会被覆盖。因此,-1 会覆盖它,hi 会覆盖它,但 1 字符不会。

关于c - getchar() 调用后 printf 打印额外的 "D",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30588648/

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