如何创建输入的每个单词以开始新行

时间:2019-04-01 09:28:12

标签: c eof getchar putchar

嘿,我正在尝试在新行上打印每个单词。我的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

1 个答案:

答案 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循环内。我认为那不是你想要的。