在新行上打印每个单词

时间:2019-04-01 10:29:21

标签: c getchar putchar

我正在尝试在新行上打印每个单词。我已经扫描了一个空格,然后打印新行。它可以反复删除一些字母:

#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 :(得分: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循环实际上可以很好地完成工作