具体的问题是:用户输入文本,例如,如果用户输入
hello (spaces) (spaces) world
用户得到的输出是
hello (space) world.
下面是我的代码,可以实现空格数的调整,我有点困惑,因为我的输出会吃掉第一个字母。我想知道为什么会这样。
代码:
#include <stdio.h>
int main() {
int characters = 0;
while ((characters = getchar()) != EOF) {
if (characters != ' ') {
putchar(characters);
}
if (characters == ' ') {
while ((characters = getchar()) == ' ');
putchar(' ');
}
}
}
输出:
Hello world world world
Hello orld orld orld
最佳答案
if (characters == ' '){
while ((characters = getchar()) == ' ');
putchar(' ');
}
此代码将一直吃字符,直到吃到非空格为止。但你不想吃任何非空间的东西。一个简单的解决方案:
if (characters == ' '){
while ((characters = getchar()) == ' ');
putchar(' ');
putchar(characters);
}
现在你吃字符直到你吃一个非空格,然后你输出一个空格,然后你输出你吃的非空格字符。
关于c - C程序设计语言第二版练习1-9,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53844384/