正在验证scanf条目
我正在考虑对这个循环进行一些验证,以确保条目大于或等于1024,小于或等于1024 我试过了正在验证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
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...
}