CSS   发布时间:2022-04-17  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了将char *转换为float或double大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个从文件读入的值,并存储为char *.值是货币编号,#.##,##.##或###.##.我想将char *转换为我可以在计算中使用的数字,我尝试过atof和strtod,他们只是给我垃圾数字.这样做的正确方法是什么,为什么我做错的方式呢?

这基本上就是我正在做的事情,只是从文件读入char *值.当我打印出temp和ftemp变量时,它们只是垃圾,巨大的负数.

另一个编辑:

我在gcc中运行这个

#include <stdio.h>
int main()
{
 char *test = "12.11";
 double temp = strtod(test,null);
 float ftemp = atof(test);
 printf("price: %f,%f",temp,ftemp);
 return 0;

}

我的输出是价格:3344336.000000,3344336.000000

编辑:这是我的代码

if(file != NULL)
    {
        char curLine [128];
        while(fgets(curLine,sizeof curLine,filE) != NULL)
        {               
            tempVal = strtok(curLine,"|");          
            pairs[i].name= strdup(tempVal);
            tempVal = strtok(NULL,"|");
            pairs[i].value= strdup(tempVal);
            ++i;
        }
        fclose(filE);
    }

    double temp = strtod(pairs[0].value,null);
    float ftemp = atof(pairs[0].value);
    printf("price: %d,ftemp);

我的输入文件是非常简单的名称,值对如下:

NAME|VALUE
NAME|VALUE
NAME|VALUE

价值是美元金额

已解决:谢谢大家,我使用%d而不是%f,并且没有包含正确的标题.

解决方法

你缺少一个包括:
#include< stdlib.h>,因此GCC创建一个atof和atod的隐式声明,导致垃圾值.

double的格式说明符是%f,而不是%d(即整数).

#include <stdlib.h>
#include <stdio.h>

int main()
{
  char *test = "12.11";
  double temp = strtod(test,null);
  float ftemp = atof(test);
  printf("price: %f,ftemp);
  return 0;
}
/* Output */
price: 12.110000,12.110000

大佬总结

以上是大佬教程为你收集整理的将char *转换为float或double全部内容,希望文章能够帮你解决将char *转换为float或double所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。