c - C-K&R 练习 1-9
问题描述
从 K&R 书中寻找练习 1-9(将输入复制到输出。用一个空格替换多个空格的每个字符串)我在这个网站上找到了这个代码。
#include <stdio.h>
main()
{
int ch, lch;
for(lch = 0; (ch = getchar()) != EOF; lch = ch)
{
if (ch == ' ' && lch == ' ')
;
else
putchar(ch);
}
}
该程序有效,但我不清楚操作:变量 lch 是做什么用的?为什么不将它插入到 for 循环的第三个条件中,并且如果程序没有给出正确的输出?
解决方案
您需要用一个空格替换多个空格。所以如果前一个输入的字符是空格,而当前输入的字符也是空格,则需要跳过当前字符。
所以 lch 存储了前一个输入字符的值。最初,当还没有任何输入时,lch 被设置为 0。然后在每次迭代中,lch 被设置为在这个 if 语句中的当前输入字符
if (ch == ' ' && lch == ' ')
当前字符和前一个字符是否都是空格。如果是这样,那么程序什么也不输出。
推荐阅读
- javascript - JSON - 获取特定元素
- xslt - XSLT:如果元素在元素中包含“xmlns”,则不会转换 xml 元素,
- git - 无法在测试分支中重新设置主控
- ansible - Ansible 动作插件使用带标签的角色
- python-3.x - 每次使用 Selenium 滚动后,如何从动态加载的网页中提取文本?
- c++ - 指向函数本地结构的指针的范围和生存期
- jquery - 应用优惠券时在 WooCommerce 结帐页面上添加下拉列表
- python-3.x - 访问自定义架构文件并将架构强加到 pyspark 数据框时出错
- python - Python - 每 10 分钟暂停整个脚本
- r - 改变不同人口数中的y轴数