【问题标题】:put() prints duplicate lines in c [closed]put()在c中打印重复的行[关闭]
【发布时间】:2020-06-04 16:32:35
【问题描述】:

我试图运行以下代码:

  #include<stdio.h>

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

我只输入了一次“hi”(或任何其他单词),当我按下时,无论该行有多大

output

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

【问题讨论】:

  • 您期望的输出是什么?请edit您的问题包括输入、实际和预期输出作为文本。也请花点时间阅读How to Ask,以及this question checklist
  • 代码正在按照你的吩咐去做!您一次输入一个字符,然后一次打印一个字符。也许在你的while 循环中添加一个putchar('\n');,看看实际发生了什么。
  • 我希望当我输入“hi”并按 Enter 时,它会将我带到新行而不是新行,并且不会再次打印“hi”。

标签: c string while-loop newline eof


【解决方案1】:

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

hi

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

如果你想改变这个,你必须把你的终端设置为字符模式并关闭本地回显ncurses 之类的库可以为您提供帮助。

【讨论】:

  • 天哪,谢谢,现在我明白为什么会这样了
猜你喜欢
  • 2013-11-07
  • 2011-07-30
  • 2020-07-21
  • 1970-01-01
  • 2013-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多