首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在getchar()调用后打印额外的"D“

问在getchar()调用后打印额外的"D“
EN

Stack Overflow用户
提问于 2015-06-02 06:12:46
回答 1查看 355关注 0票数 0

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

运行以下代码:

代码语言:javascript
复制
#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,如果有人能解释如何删除它,我将非常感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-02 06:42:08

因此,所发生的是控制台输入打印您所输入的内容。就像你键入字母A,字母A会被打印出来一样。CTRL作为^D打印到标准输出。

如果打印出一个字符,则^将被覆盖。如果打印出两个字符,则^和D都会被覆盖。所以,-1覆盖它,hi覆盖它,但是一个字符不能覆盖它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30588648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档