正在验证scanf条目

正在验证scanf条目,c,validation,scanf,C,Validation,Scanf,我正在考虑对这个循环进行一些验证,以确保条目大于或等于1024,小于或等于1024 我试过了 if(scanf("%d", &records[*rCount].source) == 1 && &records[*rCount].source >= 1 && &records[r*Count].source <= 1024) 读取所需变量后,您正在测试其地址 您将&records[*rCount].source,即records

我正在考虑对这个循环进行一些验证,以确保条目大于或等于1024,小于或等于1024

我试过了

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

读取所需变量后,您正在测试其地址

您将
&records[*rCount].source
,即
records[*rCount].source
(注意开头的额外符号)的地址传递给scanf,因此函数将从标准输入中读取的内容保存到此地址中。之后,您需要将变量值(而不是其地址)与您的限制进行比较

如果,则更正后的
将为:

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

&&记录[*rCount].source为什么getchar在这里?
r*Count
是一个打字错误,对吗?@rullof可能是为了捕捉换行符(
'\n'
)。如果用户输入字符,getchar会停止循环。@BitFiddlingCodeMonkey所以他应该使用循环:
while(getchar()!='\n')是的,也许吧。谢谢你指出这一点,谢谢迈克尔·普赖尔的编辑。
if (scanf("%d", &records[*rCount].source) == 1
    && records[*rCount].source >= 1
    && records[*rCount].source <= 1024)
{
    // do stuff...
}