我想知道如果在我的程序中我使用scanf("%d",&num)
请求整数输入并且用户输入字符串和整数字符串(例如at3stf0rfun
)会发生什么。
在这种情况下num
的价值是多少?是仅采用整数30
还是将字符转换为'ASCII十进制值?
答案 0 :(得分:4)
遇到无效输入时扫描停止。因此,在您的代码中,num
的值将保持不变。
要检测是否发生了这种情况,您需要检查scanf
的返回值。引用man scanf
:
返回值
这些函数返回分配的输入项数。这个可以 如果匹配,则少于提供的数量,甚至为零 失败。零表示虽然有可用的输入, 没有分配转换; 通常这是由于无效 输入字符,例如'%d'的字母字符 转化即可。如果发生输入故障,则返回值EOF 在发生任何转换之前,例如文件结束。如果是错误或 转换开始后发生文件结束,数量 成功完成的转换将被返回。