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

时间:2018-12-19 03:59:44

标签: c

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

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

enter image description here

1 个答案:

答案 0 :(得分:2)

ReactorClientHttpConnector connector = new ReactorClientHttpConnector(
                options -> options.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, requestTimeout).compression(true)
                        .afterNettyContextInit(ctx ->  ctx.addHandlerLast(new ReadTimeoutHandler(readTimeout, TimeUnit.MILLISECONDS))));
        return WebClient.builder()
                        .clientConnector(connector)
                        .baseUrl(hostURL)
                        .build();

此代码将一直占用字符,直到它占用非空格为止。但是您不想吃任何非空格。一个简单的解决方法:

    if (characters == ' '){
        while ((characters = getchar()) == ' ');
        putchar(' ');
    }

现在您要吃字符,直到您吃了一个非空格,然后输出一个空格,然后输出您所吃的非空格字符。