我正在考虑对此循环进行一些验证,以确保输入大于或等于且小于或等于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);
答案 0 :(得分:2)
您在阅读后正在测试所需变量的地址。
您将&records[*rCount].source
的地址{(1}}(请注意开头的额外&符号)传递给scanf,因此该函数会将标准输入中读取的内容保存到此地址中。之后,您希望将变量值(而非其地址)与您的限制进行比较。
您的更正records[*rCount].source
将是:
if