scanf并输入字符

时间:2013-04-08 08:21:22

标签: c

我想知道如果在我的程序中我使用scanf("%d",&num)请求整数输入并且用户输入字符串和整数字符串(例如at3stf0rfun)会发生什么。 在这种情况下num的价值是多少?是仅采用整数30还是将字符转换为'ASCII十进制值?

1 个答案:

答案 0 :(得分:4)

遇到无效输入时扫描停止。因此,在您的代码中,num的值将保持不变。

要检测是否发生了这种情况,您需要检查scanf的返回值。引用man scanf

  

返回值

     

这些函数返回分配的输入项数。这个可以   如果匹配,则少于提供的数量,甚至为零   失败。零表示虽然有可用的输入,   没有分配转换; 通常这是由于无效   输入字符,例如'%d'的字母字符   转化即可。如果发生输入故障,则返回值EOF   在发生任何转换之前,例如文件结束。如果是错误或   转换开始后发生文件结束,数量   成功完成的转换将被返回。