输入验证(具有多个值)

时间:2013-11-01 16:08:33

标签: c validation input

对于学校,我写了一个程序来计算桥接电阻的桥接电路的电压和电流。

我的问题是我希望用户输入所有电阻作为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]),此代码只会“抛出”“错误”。验证用户输入的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

获得安全输入的最佳方法是使用fgets并将整个输入作为字符串读取。然后,您可以验证字符串是否正常,然后您可以解析单个数字(例如sscanf)。

fflush(stdin);是未定义的行为,该函数仅为输出流定义良好。因此,此行会导致程序崩溃,刻录或看似按预期工作。使用getchar()而不是read this,将换行字符从stdin中冲洗掉。