对于学校,我写了一个程序来计算桥接电阻的桥接电路的电压和电流。
我的问题是我希望用户输入所有电阻作为CSV(R1,R2,R3 ......)。我想验证用户输入以检查是否只输入了浮点数或整数。
我为验证编写了这个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]),此代码只会“抛出”“错误”。验证用户输入的最佳方法是什么?
答案 0 :(得分:0)
获得安全输入的最佳方法是使用fgets
并将整个输入作为字符串读取。然后,您可以验证字符串是否正常,然后您可以解析单个数字(例如sscanf
)。
fflush(stdin);
是未定义的行为,该函数仅为输出流定义良好。因此,此行会导致程序崩溃,刻录或看似按预期工作。使用getchar()
而不是read this,将换行字符从stdin中冲洗掉。