我有一个从文件中读取的值并存储为 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, %f",temp,ftemp);
我的输入文件是非常简单的名称,值对是这样的:
NAME|VALUE
NAME|VALUE
NAME|VALUE
价值为美元金额
已解决:谢谢大家,我使用的是 %d 而不是 %f 并且没有包含正确的标题。