Язык программирования C, второе издание, практика 1-9 - PullRequest
0 голосов
/ 19 декабря 2018

Конкретный вопрос заключается в следующем: пользователь вводит текст, например, если пользователь вводит

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 голосов
/ 19 декабря 2018
    if (characters == ' '){
        while ((characters = getchar()) == ' ');
        putchar(' ');
    }

Этот код будет поедать символы до тех пор, пока он не съест не пробел.Но вы не хотите есть какие-то не пробелы.Простое исправление:

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

Теперь вы едите символы до тех пор, пока вы не съедите не пробел, затем выведите один пробел, а затем выведите непробельный символ, который вы съели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...