Прочтите специфику c шаблон в C из стандарта в - PullRequest
0 голосов
/ 08 мая 2020

У меня проблемы с чтением стандартного ввода в консольном приложении в C.

Мне нужно получить ввод в определенном c шаблоне / формате, таком как '(num, num)' без кавычек. Это [[открытые скобки, число, запятая, пробел, другое число, закрывающие круглые скобки]].

Когда я читал свою программу с помощью scanf("%d %d", &a, &b);, она читала два числа, разделенных пробелом. Я хочу попытаться заставить его понять желаемый шаблон, как описано выше, например, scanf("(%d, %d)", &a, &b);, где a - первое число, а b - второе. Это не работает, так как после этого scanf у меня также есть еще одно приглашение ввода, которое пропускается из-за шаблона строки, но работает с scanf("%d %d", &a, &b);. Есть какие-нибудь советы?

int main(int argc, char* argv[]) {

  int a, b, c;

  printf(This is where the pait is required: ");
  scanf("(%d, %d)", &a, &b);

  printf("a: %d, b: %d\n", a, b); // Check values here...

  printf("This is where I ask for another number as input: ");
  scanf("%d", &c);

  printf("c: %d\n", c); // Check value here...

  // Do stuff here but above code should skip over the second scanf...

  exit(0);
}

1 Ответ

1 голос
/ 09 мая 2020

Как указано @dxiv «Безопаснее просто использовать " (%d ,%d )" в обоих местах, без использования getchar» «Также обратите внимание, что% d 'поглощает' любые начальные пробелы, поэтому формат будет читать (123,456) с любым числом пробелов или новых строк, вставленных между числами и разделителями. "

...