while循环来验证输入是C中的数字吗?

这个问题在这里已经有了答案:

  • 为什么在一个循环中,scanf()与%d不会等待用户输入以防事先收到无效输入? 1个答案

  • 如果scanf未能预先执行请求的转换,则会使输入流保持不变。 所以,当你的检查是正确的,你需要清除错误输入的输入流,然后重新尝试再次读取一个数字。

    你可以用scanf本身和输入抑制修饰符来做到这一点:

    float num1;
    while (scanf("%f",&num1)==0)
    {
      printf("Invalid input. Please enter a number: ");
      scanf("%*s");
    }
    

    %*s将指示scanf解析输入,就好像它试图转换一串字符(从流中删除进程中的字符),但是由于星号,它不会尝试将它写入任何地方。

    链接地址: http://www.djcxy.com/p/72199.html

    上一篇: While loop to validate input is a number in C?

    下一篇: in a struct, scanf returns var address not value