-3

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

4

1 回答 1

4

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

要检测是否发生了这种情况,您需要检查scanf. 引用 man scanf

返回值

这些函数返回分配的输入项的数量。在匹配失败的情况下,这可能比提供的要少,甚至为零。零表示尽管有可用的输入,但没有分配转换;这通常是由于输入字符无效,例如用于 '%d' 转换的字母字符。如果在任何转换(例如文件结尾)之前发生输入失败,则返回值 EOF。如果在转换开始后发生错误或文件结尾,则返回成功完成的转换次数。

于 2013-04-08T08:24:10.073 回答