我正在尝试在新行上打印每个单词。我已经扫描了一个空格,然后打印新行。它可以反复删除一些字母:
#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
答案 0 :(得分:0)
这里的问题是,您将第一个char值分配给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;
}
答案 1 :(得分:0)
int nextChar; nextChar = getchar();
上述几行显然是您面临该问题的原因。 它将第一个字符存储在nextChar变量中,但是,您永远都不会最终使用它。因此,输入中的其余字符按预期工作。在其余的句子中,它工作正常,因为上述无用的行超出了while循环的范围,而while循环实际上可以很好地完成工作