c - put() 在 c 中打印重复的行
问题描述
我试图运行以下代码:
#include<stdio.h>
void main()
{
int c;
while((c=getchar()) !=EOF)
putchar(c);
}
我只输入了一次“hi”(或任何其他单词),当我按下时,用新的一行再次输入它的打印相同的东西,无论该行有多大
我不知道发生了什么,输入流没有缓冲
解决方案
您的终端以线路模式运行。所以当你输入字符时
hi
该程序尚未读取它们。它们只是回显到您的终端。当您按Enter时,所有字符(hi
加上换行符)都将发送到程序的标准输入。这些是逐个字符读取然后输出的。因此,文本在您的终端中出现两次。
如果要更改此设置,则必须将终端置于字符模式并关闭本地回显。像ncurses这样的库可以帮助你。
推荐阅读
- hadoop - 使用 ORC/Parquet 文件格式的大型 hive 表中的列具有相同值的影响
- sql-server - 如何在 net core 3 中配置 Serilog MSSqlSink 为每个 Web 请求使用不同的连接字符串?
- javascript - 函数可以看到在作用域之外声明的变量
- tensorflow - TensorFlow 2.0 不支持将字符串转换为浮点数
- python - 使用 python (ArcMap 10.5) 将 shapefile 中的要素复制到现有要素类中?
- c# - 如何使用 StackExchange.Redis 发布到 ServiceStack.Redis 消息队列?
- pandas - Pandas:为什么 Series.value_counts() 返回计数为零?
- javascript - 如何通过作为数组的子属性有效地对对象数组进行分组?
- python - 检索 Scholarly (Python) 上的出版物信息
- php - 在 PHP 中,如何在读取文本文件时使用条件?