在新行上打印每个单词
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 循环实际上很好地完成了工作
我试图在一个新行上打印每个单词。我已经让它扫描 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 循环实际上很好地完成了工作