#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, который на самом деле отлично выполняет свою работу