在新行上打印每个单词

print each word on a new line

我试图在一个新行上打印每个单词。我已经让它扫描 space 然后打印新行。它有时会删除一些字母:

#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

这里的问题是您将第一个字符值分配给 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;
}

int nextChar; nextChar = getchar();

上述几行显然是您遇到该问题的原因。 它会将第一个字符存储在 nextChar 变量中,但是,您永远不会最终使用它。因此,输入中的其余字符按预期工作。在其余的句子中它工作正常,因为上面提到的无用行超出了 while 循环的范围,而 while 循环实际上很好地完成了工作