【发布时间】:2012-04-10 06:40:29
【问题描述】:
我想确认scanf() 函数返回的值是否为浮点数。我怎样才能做到这一点?如果向scanf() 函数提供了错误的数据类型,我的代码将无法正常运行。同样,如何确认返回的值是否为字符串?
【问题讨论】:
-
我见过的
scanf的所有版本,返回一个int。 -
@Saurabh 按照你之前的 Qn,我想你想知道 scanf 是否成功扫描了一个浮点数,而不是 它的返回值是否是一个浮点数 如您的问题所述?
-
对于
*scanf()系列函数,最重要的一点可能是如果您扫描一个数值超出相应类型范围的数字,则行为未定义。例如,如果scanf("%d")尝试读取999999999999999999999,任何事情都可能发生;没有办法处理错误。除了使用*scanf()以外的其他东西(例如strto*()函数)之外,没有其他好的解决方法。 -
即使使用
strtol()等函数,测试错误也不是一件容易的事。仔细阅读规范。然后再读几遍。 -
@PavanManjunath 是的,除了 printf 和 scanf 之外,我还没有了解任何其他功能。所以我很难遵循以前的答案。我所能收集到的只是一个函数并不是针对所有可能错误的万无一失的解决方案。通过这个问题,我希望了解如何改进我以前包含 scanf 的代码。