C程序设计语言第二版练习1

C程序设计语言第二版练习1

具体的问题是:用户输入文本,例如,如果用户输入

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

c - C程序设计语言第二版练习1-9-LMLPHP

最佳答案

    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/

10-10 21:16