我这样做了,但可悲的是它不起作用,当输入为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/

10-10 00:52