【问题标题】:Input validation using C使用 C 进行输入验证
【发布时间】:2013-10-08 01:47:09
【问题描述】:

我正在编写一个程序来提示用户输入一个介于 1 和 5 之间的数字。如果该值大于 5 或​​小于 1,我希望程序等到给出适当的答案。这是我想出的,但它不起作用。我已经尝试了一些不同的网络提示,但仍然无法正常工作。任何提示都会很棒,谢谢。

#include <stdio.h>

int main()
{
    int p1_move;

    do{                         
        printf("1  \n 2 \n 3 \n 4 \n 5\n");
        printf("Player 1, enter the number:\n");
        scanf("%d", &p1_move);
    }while(p1_move >=6 || <=0);         
}

【问题讨论】:

  • while(p1_move &gt;=6 || p1_move &lt;=0);

标签: c validation input


【解决方案1】:

每个测试都需要一个变量:

while(p1_move >=6 || p1_move <=0);

您在这里也可能有未定义的行为:

scanf("%d", &p1_move);

你不测试输入是否成功。如果输入第一次失败(例如 EOF 或非整数输入),p1_move 将保持未初始化状态。

【讨论】:

    【解决方案2】:

    您的代码不应编译。

    改变

    while(p1_move >=6 || <=0);  
    

    while(p1_move >=6 || p1_move <=0);  
    

    【讨论】:

    • 谢谢,这行得通。或者,是否有办法让 while 语句说出 ISN'T 1/2/3/4/5 的任何内容?我还以为是 !1!2!3!4!5
    • @KThund 并非如此,!a 对于所有非零 a 结果为 0,对于零结果为 1。您仍然需要像a != 1 &amp;&amp; a !=2 &amp;&amp; a != 3 等单独测试它们。
    • 对不起,我不明白。我正在考虑这样做,因此如果输入除 1、2、3、4 或 5 以外的任何字符或数字,它将重复相同的提示。可以这样做吗?
    • @KThund 我并不是说逻辑是错误的。我是说语法应该像while (a != 1 &amp;&amp; a !=2 &amp;&amp; a != 3).
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-22
    • 2020-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-30
    相关资源
    最近更新 更多