Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
put()在c中打印重复的行_C_String_While Loop_Newline_Eof - Fatal编程技术网

put()在c中打印重复的行

put()在c中打印重复的行,c,string,while-loop,newline,eof,C,String,While Loop,Newline,Eof,我试图运行以下代码: #include<stdio.h> void main() { int c; while((c=getchar()) !=EOF) putchar(c); } #包括 void main() { INTC; 而((c=getchar())!=EOF) 普查尔(c); } 我只打了一次“hi”(或任何其他单词),当我按e

我试图运行以下代码:

  #include<stdio.h>

void main()
{  
        int c;
        while((c=getchar()) !=EOF)
                        putchar(c);
                        }
#包括
void main()
{  
INTC;
而((c=getchar())!=EOF)
普查尔(c);
}
我只打了一次“hi”(或任何其他单词),当我按enter键时,会用新行再次打印相同的内容,不管这行有多大


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

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

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


如果你想改变这一点,你必须把你的终端进入字符模式,并关闭本地回声。像ncurses这样的库可以帮助您实现这一点。

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

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


如果你想改变这一点,你必须把你的终端进入字符模式,并关闭本地回声。像ncurses这样的库可以帮助您实现这一点。

您希望得到什么样的输出?请将您的问题以文本形式包括输入、实际输出和预期输出。也请花一些时间阅读,以及。代码正在做你告诉它!一次输入一个字符,然后一次打印一个字符。可能会添加一个
putchar('\n')
while
循环中,查看实际发生的情况。我希望当我键入“hi”并按enter键时,它会将我带到新行而不是新行,并且不会再次打印“hi”。您希望得到什么输出?请将您的问题以文本形式包括输入、实际输出和预期输出。也请花一些时间阅读,以及。代码正在做你告诉它!一次输入一个字符,然后一次打印一个字符。可能会添加一个
putchar('\n')while
循环中,查看实际发生的情况。我希望当我键入“hi”并按enter键时,它会将我带到新行,而不是新行,并且不会再次打印“hi”。天哪,谢谢,现在我知道为什么会发生了感谢,现在我知道为什么会发生了