Я пытаюсь создать c программу, которая будет непрерывно принимать входные данные от стандартного ввода до выхода - PullRequest
2 голосов
/ 14 февраля 2020

Вот код, который я написал:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define SIZE 50

int main(int argc, char *argv[])
{
  char str[SIZE];
  char str2[] = "exit";
  //fgets(str, sizeof str, stdin);
  while (strcmp(str, str2) != 0)
  {
    fgets(str, sizeof str, stdin);
    printf("%s", str);
  }
  return 0;
}

Но, похоже, он не завершается и застревает в бесконечном l oop.

1 Ответ

4 голосов
/ 14 февраля 2020

Одним из решений было бы использование:

char str2[]="exit\n";

Но цикл do - while был бы наилучшим:

int main () {    
    char str[SIZE];
    char str2[]="exit\n";
    do {
        fgets(str, sizeof(str), stdin);
        printf("%s",str);
    } while(strcmp(str,str2));
    return 0; 
}

Так как в первой итерации вашего цикла str опорожнить.

...