如何将C指针转换为C中的float?

时间:2016-01-13 01:27:44

标签: c string pointers

我到处都环顾四周,几乎尝试了所有建议,无法解决任何问题。

这是我的代码:

#include <stdio.h>
#include <string.h>
#include <math.h>
int main(){
      float a;
      char *nums[3];
      char str[5];
      printf("Please enter a,b,c:");
      scanf("%s",str);
      int i=0;
      char *p;
      p = strtok (str,",");
      while (p != NULL)
        {
          nums[i++] = p;
          p = strtok (NULL, ",");
        }
      a=atof(nums[0]);
      printf("%s\n",nums[0]);
      printf("%f\n",a);
      return 0;
}
在我弄清楚之后,math.h是稍后的事情。所以,如果我进入&#34; 1,2,3&#34;进入这个程序,我的打印陈述会告诉我&#34; 1&#34;然后&#34; 0.000&#34;,显然这对我来说是可以测试的,但是为什么我的价值在尝试转换为浮点后会消失?我需要使用1的值来稍后在我的程序中进行数学计算,但无论我尝试什么,我都无法获得该指针值,我只能打印出来,但是一旦我尝试将其搞砸了将其转换为我可以使用的类型。

1 个答案:

答案 0 :(得分:4)

两个问题:

numsstr数组太短。 nums的大小至少应为3,而str的大小应至少为6(“1,2,3”加上空字节),对于较大的数字,可能更多。

所以改为:

  char *nums[3];
  char str[20];

其次,你没有#include <stdlib.h>,其中包含atof的声明。如果没有声明,则假定返回int

修复数组大小和#include <stdlib.h>,它应该可以正常工作。