Konvertieren von char * in float oder double

Ich habe einen Wert, den ich aus einer Datei eingelesen habe und der als Zeichen * gespeichert ist. Der Wert ist eine Geldzahl, #. ##, ##. ## oder ###. ##. Ich möchte das Zeichen * in eine Zahl umwandeln, die ich für Berechnungen verwenden kann. Ich habe atof und strtod ausprobiert und sie geben mir nur Müllnummern. Was ist der richtige Weg, um dies zu tun, und warum mache ich es falsch?

Dies ist im Wesentlichen, was ich tue, nur der char * -Wert wird aus einer Datei eingelesen. Wenn ich die Variablen temp und ftemp ausdrucke, handelt es sich nur um Müll, gigantische negative Zahlen.

Ein weiterer Edit:

Ich laufe genau das in 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;

}

und meine Ausgabe ist Preis: 3344336.000000, 3344336.000000

Bearbeiten: Hier ist mein Code

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

Meine Eingabedatei ist ein sehr einfacher Name, Wertepaare wie folgt:

NAME|VALUE
NAME|VALUE
NAME|VALUE

wobei der Wert Dollarbeträge ist

Gelöst: Vielen Dank, ich habe% d anstelle von% f verwendet und hatte nicht die richtigen Überschriften.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage