我这样做了,但可悲的是它不起作用,当输入为char / string等时崩溃。
我如何解决它?
while((scanf("%d",&numOfDef) != 1 ) && (numOfDef>0 ))
{
printf("not a pos num try again");
}
最佳答案
实际上,需要进行两项更改:while((scanf("%d",&numOfDef) >= 0 ) && !( numOfDef>0 ))
首先,将scanf
的返回值与0进行比较,其次,条件应为!( numOfDef>0 )
或( numOfDef<=0 )
返回值scanf
(来源:http://www.geeksforgeeks.org/g-fact-10/)
:
在C语言中,printf()返回成功写入输出的字符数,scanf()返回成功读取的项数。
Ideone代码链接:http://ideone.com/TjtuDy
关于c - 如何确保用户输入正数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29875507/