c - c 编程 while((c = getchar()) != EOF)
问题描述
我自己正在学习交流编程。但是我遇到了一些对我来说很难理解的问题。问题是:
while((c = getchar()) != EOF)
putchar(c);
我感到困惑的原因是我知道它getchar()
只能容纳一个字符,所以如果我输入"wow"
这个循环如何打印"wow"
?我无法理解循环的流程图。
比如(下面是我在想的流程图)
输入:哇
分配
'w'
给c
打印
'w'
那么这个词的其余部分在"ow"
哪里?另外,这个循环如何打印单词的其余部分"ow"
?
解决方案
这是一个循环,所以它会重复执行,直到while
条件失败。
- 执行
c = getchar()
。这会将字符读'w'
入c
. - 测试这是否不等于
EOF
。这是真的,所以我们继续循环体。 - 打印
c
,打印'w'
。 - 回到循环的开头。
- 执行
c = getchar()
。这会将字符读'o'
入c
. - 测试这是否不等于
EOF
。这是真的,所以我们继续循环体。 - 打印
c
,打印'o'
。 - 回到循环的开头。
- 执行
c = getchar()
。这会将字符读'w'
入c
. - 测试这是否不等于
EOF
。这是真的,所以我们继续循环体。 - 打印
c
,打印'w'
。 - 回到循环的开头。
- 执行
c = getchar()
。这读EOF
入c
. - 测试这是否不等于
EOF
。这是错误的,所以循环结束。
w
所以我们在第 3o
步、第 7 步和第11 步中打印了第二w
个。
您缺少的是它getchar()
每次都通过循环调用,该循环读取下一个字符。
推荐阅读
- maven - Maven:如何防止 exec 插件显示其堆栈跟踪?
- c# - .NET CORE FindByEmailAsync 操作已取消 REST 调用
- c# - 如何模拟 Directory.GetFiles?
- python - 尝试将 python 库从包含的 zip 导入路径时,cfg 文件未解析
- .net - 从根本上对 .NET Standard 类库感到困惑
- django - 如何在django的外部类中访问Primary类的id?
- sql - Postgres 10 sql如何在没有所有列的情况下做到不同
- r - R:如何在原始df中按单列分组n个数据框?
- python - 修改列表中包含特定数字(不仅仅是字符)的元素的 Pythonic 方法
- javascript - 在谷歌搜索中搜索特定链接