首页 > 解决方案 > c 编程 while((c = getchar()) != EOF)

问题描述

我自己正在学习交流编程。但是我遇到了一些对我来说很难理解的问题。问题是:

while((c = getchar()) != EOF)
    putchar(c);

我感到困惑的原因是我知道它getchar()只能容纳一个字符,所以如果我输入"wow"这个循环如何打印"wow"?我无法理解循环的流程图。

比如(下面是我在想的流程图)

输入:哇

  1. 分配'w'c

  2. 打印'w'

那么这个词的其余部分在"ow"哪里?另外,这个循环如何打印单词的其余部分"ow"

标签: c

解决方案


这是一个循环,所以它会重复执行,直到while条件失败。

  1. 执行c = getchar()。这会将字符读'w'c.
  2. 测试这是否不等于EOF。这是真的,所以我们继续循环体。
  3. 打印c,打印'w'
  4. 回到循环的开头。
  5. 执行c = getchar()。这会将字符读'o'c.
  6. 测试这是否不等于EOF。这是真的,所以我们继续循环体。
  7. 打印c,打印'o'
  8. 回到循环的开头。
  9. 执行c = getchar()。这会将字符读'w'c.
  10. 测试这是否不等于EOF。这是真的,所以我们继续循环体。
  11. 打印c,打印'w'
  12. 回到循环的开头。
  13. 执行c = getchar()。这读EOFc.
  14. 测试这是否不等于EOF。这是错误的,所以循环结束。

w所以我们在第 3o步、第 7 步和第11 步中打印了第二w个。

您缺少的是它getchar()每次都通过循环调用,该循环读取下一个字符。


推荐阅读