繁体   English   中英

getchar()!= EOF K&R

[英]getchar() != EOF K&R

我很抱歉提出这个愚蠢的问题,而且,我已经检查了与该帖子相关的主题,仍然找不到帮助。 在下面的代码片段中:

#include <stdio.h>
main()
{
  int c;
  while((c=getchar()) != EOF)
    putchar(c); 
}

Q1:如果我输入hello ,则输出为hello 它不应该仅仅是h因为虽然的getchar可以读取整个字符串,但它会接受只有一个字符,从而产生输出作为h

Q2:假设我输入n ,是否应该按以下步骤进行:

  1. getchar函数会将'n'存储为单个字符。
  2. 由于c的数据类型是整数,因此存储了n的ASCII值,即110。
  3. 这是针对EOF的整数值或-1进行的测试,由于结果为true或Boolean的值为1,因此将执行循环的主体。
  4. 在循环主体中执行了内容之后,控件再次返回“ while”循环中的条件,并再次提示用户输入字符,并且此循环一直进行到它等于EOF?

getchar()仅消耗输入流中的一个字符。 所有其他字符保留在输入流中以供后续检查。

首次调用getchar() ,它将返回'h' 第二次,它返回'e' ,然后返回'l' ,依此类推。 第六次调用它时,它返回行尾指示符'\\n' 第七次调用它时,它将暂停,等待用户键入更多数据。

仅当用户指示文件末尾时,该函数才会返回EOF。 如果输入来自终端,则用户可以通过键入CTRL + D (Unix,Linux)或CTRL + Z (DOS,Windows)来指示文件结束。 如果输入来自磁盘文件,则在用完所有文件内容后将指示文件结尾。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM