我有以下代码:
int main(void)
{
double r;
scanf("lf",&r);
printf("%lf\n",r);
}
我输入的任何值都会返回一个大约40-50位的无意义数字。 scanf与字符,整数,字符串等工作正常,但有双打我得到这个问题。 有人能帮助我吗?
答案 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);