выводить каждое слово в новой строке

#c #getchar #putchar

#c #getchar #вставить

Вопрос:

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

 #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
  

Комментарии:

1. Вы используете неправильную переменную. Вам не нужно ch , nextChar чтобы использовать это, все в порядке.

2. К вашему сведению, ch должно быть int , а не char . И неопределенная оценка играет с UB fire.

Ответ №1:

Проблема здесь в том, что вы присваиваете 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;
}
  

Ответ №2:

int nextChar; nextChar = getchar();

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