C-K&R 练习 1-9
C- K&R exercise 1-9
从 K&R 书中寻找练习 1-9(将输入复制到输出。将多个 space 的每个字符串替换为一个 space)我在这个网站上找到了这段代码。
#include <stdio.h>
main()
{
int ch, lch;
for(lch = 0; (ch = getchar()) != EOF; lch = ch)
{
if (ch == ' ' && lch == ' ')
;
else
putchar(ch);
}
}
程序可以运行,但我不清楚操作:
什么是变量lch?为什么不把它插入到 for 循环的第三个条件和 if 语句程序没有给出正确的输出?
lch
获取旧字符,因此 ch
获取 getchar()
,运行 循环,完成后,值由lch
.
您需要用一个 space 替换多个 space。所以如果前一个输入的字符是space,而当前输入的字符也是space,则需要跳过当前字符。
所以lch存储的是上一个输入字符的值。最初当还没有任何输入时 lch 被设置为 0。然后在每次迭代中 lch 被设置为当前输入的字符,在这个 if 语句
if (ch == ' ' && lch == ' ')
当前字符和前一个字符是否都是space。如果是这样,那么程序什么都不输出。
从 K&R 书中寻找练习 1-9(将输入复制到输出。将多个 space 的每个字符串替换为一个 space)我在这个网站上找到了这段代码。
#include <stdio.h>
main()
{
int ch, lch;
for(lch = 0; (ch = getchar()) != EOF; lch = ch)
{
if (ch == ' ' && lch == ' ')
;
else
putchar(ch);
}
}
程序可以运行,但我不清楚操作: 什么是变量lch?为什么不把它插入到 for 循环的第三个条件和 if 语句程序没有给出正确的输出?
lch
获取旧字符,因此 ch
获取 getchar()
,运行 循环,完成后,值由lch
.
您需要用一个 space 替换多个 space。所以如果前一个输入的字符是space,而当前输入的字符也是space,则需要跳过当前字符。
所以lch存储的是上一个输入字符的值。最初当还没有任何输入时 lch 被设置为 0。然后在每次迭代中 lch 被设置为当前输入的字符,在这个 if 语句
if (ch == ' ' && lch == ' ')
当前字符和前一个字符是否都是space。如果是这样,那么程序什么都不输出。