【问题标题】:scanf using a %f for an integerscanf 使用 %f 表示整数
【发布时间】:2011-09-05 10:32:22
【问题描述】:

我正在尝试解析一个字符串,其中包含一些由空格分隔的数字。但是,这些数字可以是整数或浮点数。 scanf 有没有办法将整数和数字都解析为一个集体浮点数?

例如:

float arg1, arg2 = 0;
sscanf("LINE 10 10", "LINE %f %f", &arg1, &arg2);

// and
sscanf("LINE 10.0 10.0", "LINE %f %f", &arg1, &arg2);

【问题讨论】:

  • 第一行sscanf 肯定没问题,可以按预期工作吗?
  • 两个例子都应该可以正常工作 - 到底是什么问题?
  • 因为任何整数也是浮点数,所以应该没有任何问题
  • 你的意思是,你想以同样的方式处理浮点数和整数......
  • 你问这些是因为你没有尝试语法就想到了它:) 请不要用简单的问题浪费这么多内存:P

标签: c floating-point integer scanf


【解决方案1】:

它只是工作,整数是浮点的特殊情况。

但是请注意,大整数可能无法用浮点数精确表示(例如1e9 + 1),但我认为您不必为此烦恼。

【讨论】:

  • 确实如此。为了减轻这个问题的严重性,OP 应该使用double 而不是float。基本上float 不应该被使用,除非你真的知道你在做什么。
【解决方案2】:

原来我的测试是错误的,你可以用 %f 从整数中读取。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多