Преобразование 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, %f",temp,ftemp);

мой входной файл очень прост пары имя, значение, такие как:

NAME|VALUE
NAME|VALUE
NAME|VALUE

со значением в долларах

РЕШЕНО: Спасибо всем, я использовал %d вместо %f и не включил правильные заголовки.

10
задан Andrew 15 May 2012 в 18:01
поделиться