C Scanf输入测试预期输入格式
我需要做一个简单的C程序,它将以预期的格式求解二次方程,需要如下: a x^2+b x+c=d x^2+e x+f 我正在使用scanf读取输入,它的工作原理与预期一致。但我需要为我的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”,
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检查我的答案它告诉您如何处理您的用例。