验证scanf条目

时间:2013-12-17 00:36:46

标签: c validation scanf

我正在考虑对此循环进行一些验证,以确保输入大于或等于且小于或等于1024.

我试过了

if(scanf("%d", &records[*rCount].source) == 1 && &records[*rCount].source >= 1 && &records[r*Count].source <= 1024)

但是会停止所有正在运作的条目。

以下是我正在使用的do while循环感谢。

do{
        puts("What is the source of this packet?: ");
        if(scanf("%d", &records[*rCount].source) == 1){  //if correct insert the record at the index
            valid=1;                                //determined by rCount(the current     record count passed to addRecord
        }
        else{
            valid = 0;
            getchar();
            puts("\nNot a valid input");
        }

    }while(valid!=1);

1 个答案:

答案 0 :(得分:2)

您在阅读后正在测试所需变量的地址

您将&records[*rCount].source的地址{(1}}(请注意开头的额外&符号)传递给scanf,因此该函数会将标准输入中读取的内容保存到此地址中。之后,您希望将变量值(而非其地址)与您的限制进行比较。

您的更正records[*rCount].source将是:

if