Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想知道如果在我的程序中我要求使用整数输入scanf("%d",&num)并且用户输入例如字符和整数的字符串会发生什么at3stf0rfun。在这种情况下,价值是num多少?它只需要整数30还是也将字符转换为其'ASCII十进制值?
scanf("%d",&num)
at3stf0rfun
num
30
遇到无效输入时扫描停止。因此,在您的代码中, 的值num将保持不变。
要检测是否发生了这种情况,您需要检查scanf. 引用 man scanf:
scanf
man scanf
返回值 这些函数返回分配的输入项的数量。在匹配失败的情况下,这可能比提供的要少,甚至为零。零表示尽管有可用的输入,但没有分配转换;这通常是由于输入字符无效,例如用于 '%d' 转换的字母字符。如果在任何转换(例如文件结尾)之前发生输入失败,则返回值 EOF。如果在转换开始后发生错误或文件结尾,则返回成功完成的转换次数。
返回值
这些函数返回分配的输入项的数量。在匹配失败的情况下,这可能比提供的要少,甚至为零。零表示尽管有可用的输入,但没有分配转换;这通常是由于输入字符无效,例如用于 '%d' 转换的字母字符。如果在任何转换(例如文件结尾)之前发生输入失败,则返回值 EOF。如果在转换开始后发生错误或文件结尾,则返回成功完成的转换次数。