首页 > 解决方案 > put() 在 c 中打印重复的行

问题描述

我试图运行以下代码:

  #include<stdio.h>

void main()
{  
        int c;
        while((c=getchar()) !=EOF)
                        putchar(c);
                        }

我只输入了一次“hi”(或任何其他单词),当我按下时,用新的一行再次输入它的打印相同的东西,无论该行有多大

输出

我不知道发生了什么,输入流没有缓冲

标签: cstringwhile-loopnewlineeof

解决方案


您的终端以线路模式运行。所以当你输入字符时

hi

该程序尚未读取它们。它们只是回显到您的终端。当您按Enter时,所有字符(hi加上换行符)都将发送到程序的标准输入。这些是逐个字符读取然后输出的。因此,文本在您的终端中出现两次。

如果要更改此设置,则必须将终端置于字符模式并关闭本地回显。像ncurses这样的库可以帮助你。


推荐阅读