C语言中scanf输入测试预期的输入格式

3
我需要编写一个简单的 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);

我需要针对每个输入都使用printf("Wrong input\n");,例如

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

我尝试了if (scanf() != 1),但它每次都打印'Wrong output'。有什么想法吗?


1
尝试使用 if (scanf(....) != 6) - kiran Biradar
它可以工作,但是当输入不完整时如何实现“输入错误”?例如,如果我只输入“1 x ^ 2 + 1 x + 1 = 0”,它会等待下一个可能的输入... - jirick
你可能需要将用户输入作为字符字符串读取并自行解析。 - aPhilRa
@JiříPašek 检查一下我的答案,它会告诉你如何处理你的用例。 - kiran Biradar
1个回答

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");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接