我需要制作一个简单的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)
,但是每次都会打印“错误输出”。
关于我该如何实现的任何想法?
答案 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");