小编Way*_*yne的帖子

getchar() != EOF K&R

我很抱歉问这个愚蠢的问题,而且,我已经检查了与这篇文章相关的线程仍然没有找到任何帮助。在下面的代码片段中:

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

Q1:如果我输入hello,输出是hello。不应该只是h因为虽然 getchar 可以读取整个字符串但它只接受一个字符并因此产生输出为h

Q2:假设我输入n,不应该如下进行:

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

c codeblocks

-1
推荐指数
1
解决办法
228
查看次数

标签 统计

c ×1

codeblocks ×1