我正在尝试使用“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,如果有人能解释如何删除它,我将非常感激。
发布于 2015-06-02 06:42:08
因此,所发生的是控制台输入打印您所输入的内容。就像你键入字母A,字母A会被打印出来一样。CTRL作为^D打印到标准输出。
如果打印出一个字符,则^将被覆盖。如果打印出两个字符,则^和D都会被覆盖。所以,-1覆盖它,hi覆盖它,但是一个字符不能覆盖它。
https://stackoverflow.com/questions/30588648
复制相似问题