0

在学校,我编写了一个程序来计算具有桥电阻的桥电路的电压和电流。

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

4

1 回答 1

0

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

fflush(stdin);是未定义的行为,该函数仅对输出流定义良好。因此,这条线会导致您的程序崩溃、烧毁或看似按预期工作。改为使用从 stdin 中清除换行符getchar()阅读此.

于 2013-11-01T16:24:08.897 回答