在学校,我编写了一个程序来计算具有电桥电阻的电桥电路的电压和电流。
我的问题是我希望用户以 CSV 形式输入所有电阻(R1、R2、R3...)。我想验证用户输入以检查是否仅输入了 float 或整数。
我编写了这个 do-while 循环来进行验证,以强制用户在输入无效时重新输入值:
int check = 1;
do{
if(check == 0){
check = 1;
puts("Re-Enter as the following: R1, R2, R3, R4, Rab");
}//endif
check = scanf("%f, %f, %f, %f, %f", &fR1, &fR2, &fR3, &fR4, &fRab);
fflush(stdin);
}while(check == 0);
check = 1;
编辑
如果用户输入字母或错误的参数计数(例如:12、12、[ENTER]),此代码只会“抛出”“错误”。验证用户输入的最佳方法是什么?
最佳答案
获得安全输入的最佳方法是使用fgets
并将整个输入作为字符串读取。然后,您可以验证该字符串是否正常,然后可以解析出各个数字(例如使用 sscanf
)。
fflush(stdin);
是未定义的行为,该函数仅针对输出流明确定义。因此,这一行会导致您的程序崩溃、烧毁或看似按预期工作。使用 getchar()
将换行符从 stdin 中清除,read this .
关于c - 输入验证(具有多个值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19730649/