嘿,我正在尝试在新行上打印每个单词。我的EOF也不起作用,想知道为什么会这样。我已经让它扫描一个空格,然后打印新行。
#include <stdio.h>
#include <ctype.h>
int main(void)
{
char ch;
while ((ch = getchar()) != '#')
putchar(ch);
int nextChar;
nextChar = getchar();
while (nextChar != '\n' && nextChar != EOF);
{
if (ch== ' ')
{
printf("\n");
}
else
{
putchar(ch);
}
{
ch = getchar();
}
printf("\n");
{
scanf("%lc",&nextChar);
printf("%c",nextChar);
}
return 0;
}
}
just for example input: Stackoverflow is great
output:
Stackoverflow
is
great
答案 0 :(得分:1)
您应该真正开始启用编译器警告。他们可以帮助您发现许多错误。当我使用-Wall
和-Wextra
进行编译时,请看这里。
$ gcc ba.c -Wall -Wextra
ba.c: In function ‘main’:
ba.c:13:5: warning: this ‘while’ clause does not guard... [-Wmisleading-indentation]
while (nextChar != '\n' && nextChar != EOF);
^~~~~
ba.c:14:5: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘while’
{
^
在while循环后删除;
。
但是还有其他问题。从我为您更正缩进时可以看到,return 0
语句位于while循环内。我认为那不是你想要的。