c - 输入验证(具有多个值)

标签 c validation input

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

我的问题是我希望用户以 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/

相关文章:

Vue.js - 使用 Vuelidate url 域应与电子邮件域匹配

java - 验证两个选择之一

jquery - 使触摸屏无法选择文本输入?

c++ - 如何将 N 个整数读入 vector ?

选中复选框时 jQuery 切换输入

C程序崩溃逆文件txt

c - 在 C 程序中的 Ubuntu 上使用 mknod

javascript - 仅当浏览器无法验证表单时才使用表单验证 javascript

C - 等效于 .NET Console.ReadLine

php - 在 C 中执行和存储命令的结果