напечатать каждое слово в новой строке - PullRequest
0 голосов
/ 01 апреля 2019

Я пытаюсь напечатать каждое слово в новой строке.Я сделал это, чтобы отсканировать пробел и затем напечатать новую строку.Он может удалять некоторые буквы за раз:

#include <stdio.h>
#include <ctype.h>

int main(void)
{
char ch;
int nextChar;
    nextChar = getchar();
    while (ch != EOF) {
        if (ch == ' ') {
            putchar('\n');
        }
        else {
            putchar(ch);
        }
        ch = getchar();
    }
    return 0;
}

Например, ввод: hello how are you

, вывод:

hello
how
are
you

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

int nextChar; nextChar = getchar ();

вышеупомянутые строки, по-видимому, являются причиной, по которой вы столкнулись с этой проблемой. он будет хранить первый символ в переменной nextChar, однако, вы никогда не будете использовать его. Следовательно, остальные символы во входных данных работают как ожидалось. А в остальных предложениях он работает нормально, потому что вышеупомянутые бесполезные строки выходят за рамки цикла while, который на самом деле прекрасно работает

0 голосов
/ 01 апреля 2019

Проблема здесь в том, что вы присваиваете первое значение символа переменной nextChar и используете переменную ch.Чтобы исправить, попробуйте следующее:

#include <stdio.h>
#include <ctype.h>

int main(void)
{
    char ch = getchar();
    while (ch != EOF) {
        if (ch == ' ') {
            putchar('\n');
        }
        else {
            putchar(ch);
        }
        ch = getchar();
    }
    return 0;
}
...