理解C中的输入和输出

时间:2016-01-15 15:32:51

标签: c input io output

请考虑以下代码:

while ((c = getchar()) != EOF)  // c is of char type 
      putchar(c);

getchar 键盘中检索一个char。但是当我观察它的执行时,发现putchar的输出在getchar遇到ENTER key之前不会发生。因此,getchar实际检索整个字符串直到ENTER键。

实际输出:

Hello 
Hello 

通缉输出:

H
H
E
E
L
L
O
O

3 个答案:

答案 0 :(得分:2)

流被缓冲,'\n'字符刷新缓冲区,所以是的,您需要按Enter键才能使字符变为&#34; 刷新&#34;。< / p>

此外,// c is of type char错误,因为EOF无法表示。 getchar()函数返回int,因此c必须是int类型,或c可能会溢出。

答案 1 :(得分:0)

当您输入字符串Hello时,它会进入键盘缓冲区。在按 Enter / Reurn 按钮时,此字符流将转到标准输入缓冲区,并从那里getchar逐个读取它。

请注意,getchar会返回int,因此c应为int类型。

答案 2 :(得分:0)

getchar()无法直接从键盘读取击键;它从输入流中读取字符,缓冲使得输入不会发送到您的程序,直到您点击 Enter

如果您需要在键入时阅读单个按键,那么最好使用特定于平台的实用程序(例如getch库中的ncurses函数)来执行此操作。