Как продержаться некоторое время? - PullRequest
0 голосов
/ 29 марта 2020

Я работаю над программой, которая должна постоянно запрашивать ввод у пользователя, вроде меню, пока он не выберет опцию выхода. В зависимости от того, что они выберут, будет выполняться какая-то операция в зависимости от выбора. Сейчас я просто пытаюсь проверить, будет ли меню печататься для пользователя, но оно автоматически закрывается, как только я запускаю программу один раз. Вот что у меня есть:

#include <stdio.h>
#include <string.h>

int main()
{
  char str;
  unsigned int hex;
  int decimal;


  while(str != 'Q'){
    printf("Choose an Option (C, M, Q, S, V): ");
    scanf("%c", &str);

    if(str == 'C'){
      printf("C working.");
      break;
    }
    else if(str == 'M'){
      printf("M working.");
      break;

    }
    else if(str == 'S'){
      printf("S working.");
      break;

    }
    else if (str == 'V'){
      printf("V working.");
      break;

    }




  }
    return 0;
}

Q - это опция, которая немедленно завершит программу, если выбрана, но другие - нет.

Пример вывода, который я получил:

Choose an Option (C, M, Q, S, V): M
M working. (base)

Ответы [ 4 ]

2 голосов
/ 29 марта 2020

Перерыв выходит из времени l oop. Оператор if не является циклической структурой, поэтому break предназначен для ближайшего l oop, который является временем.

1 голос
/ 30 марта 2020

, если вы хотите, чтобы меню продолжало печатать для пользователя, просто удалите оператор break в каждом из блоков (if, else if). потому что операторы break и continue влияют на ближайший к ним оператор повторения, который является , тогда как l oop в вашем коде.

how break statement works

0 голосов
/ 29 марта 2020

кажется, что вы хотите break на 'Q' только :

int main()
{
  char str = null;
  unsigned int hex;
  int decimal;

  while(1 == 1) { /* infinite loop until user breaks with a help of Q */
    printf("Choose an Option (C, M, Q, S, V): ");
    scanf("%c", &str);

    if (str == 'Q') /* break on Q only */
      break; 

    /* All the other cases: perform the operation and ask again */
    if(str == 'C'){
      printf("C working.");
    }
    else if(str == 'M'){
      printf("M working.");
    }
    else if(str == 'S'){
      printf("S working.");
    }
    else if (str == 'V'){
      printf("V working.");
    }
  }

  return 0;
}
0 голосов
/ 29 марта 2020

Вам нужно инициализировать str.

int main()
{
  char str = 0;
  unsigned int hex = 0;
  int decimal = 0;

...
...