【问题标题】:Input validation ( with multiple values )输入验证(具有多个值)
【发布时间】:2013-11-01 16:08:33
【问题描述】:

为了上学,我写了一个程序来计算带有桥电阻的桥电路的电压和电流。

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

【问题讨论】:

  • 具体问题是什么?
  • OP,你有没有测试过这个......就像一次
  • 好的,首先,scanf 返回什么?当用户输入“12.0.12”时会发生什么。支票的价值是多少?

标签: c validation input


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2017-04-04
    • 1970-01-01
    • 2017-11-29
    • 1970-01-01
    • 2019-08-02
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    相关资源
    最近更新 更多