gpt4 book ai didi

c - 验证 scanf 条目

转载 作者:太空宇宙 更新时间:2023-11-04 08:48:32 24 4
gpt4 key购买 nike

我正在考虑在此循环中进行一些验证,以确保输入大于或等于且小于或等于 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);

最佳答案

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

你把&records[*rCount].sourcerecords[*rCount].source的地址(注意开头多出来的&号)传给scanf,所以该函数将从标准输入中读取的内容保存到该地址中。之后,您想要将变量值(而不是其地址)与您的限制进行比较。

您更正后的 if 将是:

if (scanf("%d", &records[*rCount].source) == 1
&& records[*rCount].source >= 1
&& records[*rCount].source <= 1024)
{
// do stuff...
}

关于c - 验证 scanf 条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20623786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com