Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C Scanf输入测试预期输入格式_C_Testing_Input_Scanf - Fatal编程技术网

C Scanf输入测试预期输入格式

C Scanf输入测试预期输入格式,c,testing,input,scanf,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); 我需要printf(“输入错误”)用于每个输入,如f.e “abc”,

我需要做一个简单的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(“输入错误”)用于每个输入,如f.e

“abc”,“1x^2+1x+1=0”,“x^ 3…”

我尝试了
if(scanf()!=1)
,但每次都打印“错误的输出”。 关于我如何才能做到这一点,有什么想法吗

如果我只输入“1x^2+1x+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");

如果(scanf(..)!=6)可以尝试
。这是可行的,但是如果输入不完整,我如何才能完成“错误的输入”?F.e.如果我只输入“1x^2+1x+1=0”,它将等待下一个可能的输入…您可能必须开始将用户输入读取为字符串,然后自己解析。@JiříPašek检查我的答案它告诉您如何处理您的用例。