как создать каждое слово ввода, чтобы начать новую строку - PullRequest
0 голосов
/ 01 апреля 2019

Эй, я пытаюсь напечатать каждое слово в новой строке. Мой 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 Ответ

1 голос
/ 01 апреля 2019

Вы должны ДЕЙСТВИТЕЛЬНО начать включать предупреждения компилятора. Они могут помочь вам найти много ошибок. Посмотрите здесь, когда я компилирую с -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. Я полагаю, это не то, что вы хотите.

...