У меня есть значение, которое я считываю из файла и которое хранится как 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 и не включил правильные заголовки.