C Scanf входное тестирование на ожидаемый формат ввода - PullRequest
0 голосов
/ 24 октября 2018

Мне нужно сделать простую программу на C, которая будет решать квадратное уравнение в ожидаемом формате, который должен выглядеть следующим образом:

ax ^ 2 + bx + c = dx ^ 2 + ex + f

Я использую scanf для чтения ввода, и он работает как положено.Но мне нужно реализовать некоторое тестирование ввода для моего чтения scanf, которое сейчас выглядит так:

scanf("%f x^2 + %f x + %f = %f x^2 + %f x + %f", &a, &b, &c, &d, &e, &f);

Мне нужно printf("Wrong input\n"); для каждого ввода, например, fe

'abc',' 1 x ^ 2 + 1 x + 1 = 0 ',' x ^ 3 ... '

Я пробовал if (scanf() != 1), но он выводит «Неверный вывод» каждый раз,Есть идеи о том, как мне это сделать?

1 Ответ

0 голосов
/ 24 октября 2018

если я введу только '1 x ^ 2 + 1 x + 1 = 0', он ждет следующего возможного ввода.

В этом случае прочитайте полный ввод, используя fgets ипроанализируйте значения, используя sscanf, как показано ниже.

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

  int r = sscanf(buf,"%f x^2 + %f x + %f = %f x^2 + %f x + %f", &a, &b, &c, &d, &e, &f);
  if (r!=6)
     printf("Wrong input\n");
  else
     printf("correct\n");
...