【发布时间】:2020-12-29 00:09:14
【问题描述】:
这已经被问过了,但是我自己做了一个程序,我不知道为什么它不起作用。
int c;
char blank;
while ((c = getchar()) != EOF) {
if (c == ' ') {
putchar(c);
while ((c = getchar()) == ' ') {
putchar('');
}
}
putchar(c);
}
基本上,我所做的就是用空替换空格。但它不起作用。如果我输入 '1' 而不是 '' 它会用 1 替换空格,所以我不知道有什么问题
【问题讨论】:
-
您希望
putchar('')做什么?''不是有效的字符常量。如果你不想输出任何东西,就什么也不做。 -
如果不想输出字符,就不要调用
putchar()。 -
附加问题:循环中的第二个
getchar也可以返回EOF,因此您可能必须跳过条件if块之后的putchar。 -
有趣的事实:整个程序可以简化为一个单行的空
for循环。for(char s[99]; scanf(" %s", s) == 1; printf("%s ", s)); -
很好的解决方案@davide 虽然这也会从输入中删除换行符