C, каждое слово в новой строке - PullRequest
0 голосов
/ 25 февраля 2019

Задача - «написать программу на C, которая помещает само слово из ввода в новую строку без использования строк».Я пытался решить это, делая это, но я никогда не получал никакого ответа (даже с одним письмом).Я тоже пытался обратиться за помощью к другим задачам, но они обычно решают это с помощью строки.Поскольку я новичок в C, мой курс для начинающих все еще работает только с символом, а не со строкой.Заранее спасибо за помощь.

#include <stdio.h>
    int main() {
        int c;
        int state;
        state=1;
        while((c=getchar())!=EOF) {
            if(c=' ')
                 state=0;
            else 
                if (state=0) {
                    putchar('\n');
                    state=1; }
                    else putchar(c);
        }
    }

1 Ответ

0 голосов
/ 25 февраля 2019

В вашем коде есть несколько проблем

  • if(c=' ') где = должно быть ==
  • if (state=0) где = должно быть ==
  • символ после пробела теряется и заменяется на \ n
  • символы типа \ n не считаются пробелом

Функция isspace является вашим другомзнать, если персонаж играет роль пробела.

Предложение исправить все проблемы может быть:

#include <stdio.h>
#include <ctype.h>

int main() {
  int c;
  int inWord = 0;

  while((c=getchar())!=EOF) {
    if (!isspace(c)) {
      putchar(c);
      inWord = 1;
    }
    else if (inWord) {
      putchar('\n');
      inWord = 0;
    }
  }

  if (inWord)
    putchar('\n');
}

Компиляция и выполнение:

pi@raspberrypi:/tmp $ gcc -pedantic -Wextra -g s.c
pi@raspberrypi:/tmp $ cat f
just    a
 test of  
validity
pi@raspberrypi:/tmp $ ./a.out < f
just
a
test
of
validity
pi@raspberrypi:/tmp $ 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...