Konwertowanie znaku * na float lub double

Mam wartość, którą wczytałem z pliku i zapisuję jako znak *. Wartość to numer pieniężny, #. ##, ##. ##, lub ###. ##. Chcę przekonwertować znak * na liczbę, której mogę użyć w obliczeniach, próbowałem atof i strtod, a oni po prostu podają mi numery śmieci. Jaki jest właściwy sposób na to i dlaczego sposób, w jaki to robię, jest zły?

Jest to zasadniczo to, co robię, tylko wartość char * jest odczytywana z pliku. Kiedy wypisuję zmienne temp i ftemp, są to tylko śmieci, gigantyczne liczby ujemne.

Kolejna edycja:

Używam dokładnie tego w 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;

}

a moim wynikiem jest cena: 3344336.000000, 3344336.000000

Edytuj: Oto mój kod

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);

mój plik wejściowy to bardzo prosta nazwa, pary wartości w ten sposób:

NAME|VALUE
NAME|VALUE
NAME|VALUE

z wartością będącą kwotami w dolarach

SOLVED: Dziękuję wszystkim, użyłem% d zamiast% f i nie miałem odpowiednich nagłówków.

questionAnswers(3)

yourAnswerToTheQuestion