C Scanf输入测试以获取预期的输入格式

时间:2018-10-24 07:37:06

标签: c testing input scanf

我需要制作一个简单的C程序,该程序将以期望的格式求解二次方程式,

  

a x ^ 2 + b x + c = d x ^ 2 + e x + f

我正在使用scanf读取输入,并且按预期方式工作。但是我需要为我的scanf读取实现一些输入测试,就像现在这样:

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

对于像f.e.这样的每个输入,我需要printf("Wrong input\n");

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

我尝试了if (scanf() != 1),但是每次都会打印“错误输出”。 关于我该如何实现的任何想法?

1 个答案:

答案 0 :(得分:2)

  

如果我仅输入'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");