Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将字符串中的数字转换为c中的浮点:atof(),strof()不起作用_C - Fatal编程技术网

将字符串中的数字转换为c中的浮点:atof(),strof()不起作用

将字符串中的数字转换为c中的浮点:atof(),strof()不起作用,c,C,我的C生锈了。我正在尝试将字符串转换为float(或double)。我已经尝试了atof()和strtof(),并尝试了遵循说明和。不走运 这是我的密码: #include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { float x; char a[20]; strcpy(a,argv[1]); x = strtof(a); printf("%s\n",a);

我的C生锈了。我正在尝试将字符串转换为float(或double)。我已经尝试了atof()和strtof(),并尝试了遵循说明和。不走运

这是我的密码:

#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[]) {
  float x;
  char a[20];
  strcpy(a,argv[1]);
  x = strtof(a);
  printf("%s\n",a);
  printf("%f\n",x);
  return 0;
}
如果改用atoi(),则得到0.0

很明显,我遗漏了一些简单的东西。这是ubuntu fwiw上的GCC4.8.4

如果我使用-static标志编译,或者使用double而不是float(使用%e而不是%f),或者包含math.h,都没有区别。在某些情况下,输出会发生变化,但这仍然是胡说八道

谢谢,
Peter

您还没有将
包含在获取的原型中。因此,返回类型默认为int。但隐式int规则自C99以来已从C中删除

用法也是错误的。它至少应该是:

char *eptr;

x = strtof(a, &eptr);
并检查
eptr
是否存在转换故障

在启用警告的情况下编译。GCC警告:

警告:函数“strtof”的隐式声明 [-Wimplicit函数声明]


您还没有包括
以获取的原型。因此,返回类型默认为int。但隐式int规则自C99以来已从C中删除

用法也是错误的。它至少应该是:

char *eptr;

x = strtof(a, &eptr);
并检查
eptr
是否存在转换故障

在启用警告的情况下编译。GCC警告:

警告:函数“strtof”的隐式声明 [-Wimplicit函数声明]


您是否禁用了警告或其他功能?
strof()
的原型看起来与您想象中的大不相同。是否禁用了警告或什么?
strof()
的原型看起来与您想象的大不相同。好的,谢谢。我没有禁用警告,也没有收到警告,但这显然是问题所在。包括stdlib.h,并将第二个参数“NULL”添加到strtof(),一起修复了它。然而,我认为strcpy()的用法实际上是正确的;argv[1]已经是指针。Ooops,您指的是strof()的用法,而不是strcpy()。是的,你是对的,我对strof()的用法不正确(叹气)。好的,谢谢。我没有禁用警告,也没有收到警告,但这显然是问题所在。包括stdlib.h,并将第二个参数“NULL”添加到strtof(),一起修复了它。然而,我认为strcpy()的用法实际上是正确的;argv[1]已经是指针。Ooops,您指的是strof()的用法,而不是strcpy()。是的,你是对的,我对strtof()的用法不正确(叹气)。