scanf读取每一个双重错误

时间:2013-11-25 12:45:15

标签: c double scanf lf

我有以下代码:

    int main(void)
{
    double r;
    scanf("lf",&r);
    printf("%lf\n",r);
}

我输入的任何值都会返回一个大约40-50位的无意义数字。 scanf与字符,整数,字符串等工作正常,但有双打我得到这个问题。 有人能帮助我吗?

6 个答案:

答案 0 :(得分:4)

scanf("lf",&r);

应该是

scanf("%lf",&r);

答案 1 :(得分:4)

您错过了格式字符串中的百分比(%)符号,它应该是:

scanf("%lf", &r);

然后你应该添加检查返回值,因为正如你刚才所知,I / O很脆弱并且可能会失败。因此,除非您确认扫描有效,否则依赖包含有效值的r是错误的:

if(scanf("%lf", &r) == 1)
{
  print("got the double %g\n", r);
}
else
{
  printf("**Failed to read a double value!\n");
}

答案 2 :(得分:3)

阅读时需要%lf

答案 3 :(得分:3)

尝试

scanf("%lf",&r);

您忘了加入%

答案 4 :(得分:0)

你需要

scanf("%lf", &r);

无论何时使用scanf(),您都需要将百分号放在您正在使用的变量类型的前面。

答案 5 :(得分:0)

您在%之前忘了lf

scanf("%lf", &yourDouble);