我正在学习c通过阅读 K&R。我努力做到有条不紊,并确保在继续之前理解这些概念。
其中一个练习要求编写一个程序,将输入复制到输出“用一个空格替换一个或多个空格的每个字符串。”
我编写了以下内容,但即使存在多个连续的空格,它也会逐字输出输入:
#include <stdio.h>
main()
{
int c, d, a;
c = getchar();
while (c != EOF)
{
a = c;
if (c == ' ' && d == ' ')
{
a = 0;
}
d = c;
putchar(a);
c = getchar();
}
}
我在这里做错了什么?我对这本书了解不多,所以我觉得我错过了一些非常简单的东西......
最佳答案
评论中有一些好的观点:
- 使用有意义的变量名称
putchar(0)
与不写入任何内容不同- 所有变量都需要初始化
我再提出一个建议:
while
循环应读取字符并检查 EOF,如下所示
(假设您有 K&R 第 2 版,请参阅第 17 页上的 1.5.1 节了解详细说明。)
这是我编写代码的方式:
#include <stdio.h>
int main(void)
{
int c;
int oldc = 'a';
while ( (c=getchar()) != EOF )
{
if (oldc != ' ' || c != ' ')
putchar(c);
oldc = c;
}
}
关于c - 空间没有被替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39218049/