scanf несколько переменных или одна переменная - PullRequest
1 голос
/ 31 марта 2019

В C мне нужно ввести четыре переменные, используя scanf

scanf("%c %d %d %d", &v1, &v2, &v3, &v4)

первая переменная может принимать два значения 'c' и 'q'

когда я ввожу c, то я ввожу другие переменные, он будет выполнять некоторые вычисления, но когда я захочу выйти, я должен ввести только 'q' и не вводить остальные переменные, но scanf не будет двигаться вперед, пока я не введу остальные переменных

есть, в любом случае, решить это, я не уверен, если это возможно с помощью Scanf, но если есть другая функция, то я не против использовать ее

Ответы [ 2 ]

2 голосов
/ 31 марта 2019

"все равно есть, чтобы решить ее"

Считать строку ввода пользователя с помощью fgets() ...

char buf[100];
if (fgets(buf, sizeof buf, stdin)) {

.. а затем отсканируйте его

  char v1;
  int v2,v2,v3;
  int cnt = sscanf(buf, "%c %d %d %d", &v1, &v2, &v3, &v4);
  if (cnt >= 1 && v1 == 'q') Quit();
  else if (cnt == 4 && v1 == 'c') Do_stuff(v2,v3,v4);
  else puts("Bad input");
1 голос
/ 31 марта 2019

Вы должны использовать несколько scanfs для этого.Например

scanf("%c", &v1);
if(v1 == 'c'){
    scanf("%d %d %d",&v2, &v3, &v4);
    /*some staff*/
}
else{
    /*another staff*/ 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...