我有一个从文件读入的值,并存储为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
价值是美元金额