put() 在 C [closed] 中打印重复的行

put() prints duplicate lines in c [closed]

提问人:meivinay 提问时间:2/20/2020 最后编辑:meivinay 更新时间:2/20/2020 访问量:131

问:


想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

3年前关闭。

我正在尝试运行以下代码:

  #include<stdio.h>

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

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

输出

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

c 字符串 while-loop 换行符 EOF

评论

2赞 Some programmer dude 2/20/2020
你期待什么输出?请编辑您的问题,以文本形式包含输入、实际和预期输出。另外,请花一些时间阅读如何提问,以及这个问题清单
1赞 Adrian Mole 2/20/2020
代码正在按照您的指示执行!您一次输入一个字符,然后打印每个字符,一次一个。也许在你的循环中添加一个,看看实际发生了什么。putchar('\n');while
0赞 meivinay 2/20/2020
我希望当我输入“嗨”并按回车键时,它会将我带到新行而不是新行,并且不会再次打印“嗨”。

答:

2赞 Ctx 2/20/2020 #1

您的终端以线路模式运行。因此,当您键入字符时

hi

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

如果你想改变这一点,你必须将终端置于字符模式关闭本地回声。像 ncurses 这样的库可以帮助你。

评论

1赞 meivinay 2/20/2020
天哪,谢谢,现在我明白为什么会这样了