Ich habe einen Wert ich aus einer Datei eingelesen und wird als Char * gespeichert. Der Wert ist eine monetäre Nummer, #. ##, ##. ## oder ###. ##. Ich möchte das char * in eine Zahl umwandeln, die ich in Berechnungen verwenden kann, ich habe atof und strtod ausprobiert und sie geben mir nur Müllnummern. Was ist der richtige Weg dies zu tun, und warum mache ich es falsch?Konvertieren von char * in float oder double
Dies ist im Wesentlichen was ich tue, nur der char * Wert wird aus einer Datei eingelesen. Wenn ich die Variablen temp und ftemp ausdrucke, sind sie nur Müll, gigantische negative Zahlen.
Ein weiterer Edit:
Ich laufe genau in diese 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 der Preis: 3344336,000000, 3344336,000000
Edit: 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 sehr einfach Name, Wert-Paare wie folgt aus:
NAME|VALUE
NAME|VALUE
NAME|VALUE
mit dem Wert Dollar
seinGELÖST beträgt: Danke euch allen, ich anstelle von% f mit% d und didn‘ t haben die richtigen Header enthalten.
Das Problem muss woanders sein, der von Ihnen gepostete Code ist absolut gültig und funktioniert. Bitte zeigen Sie uns, wie Sie Ihre Datei lesen. –
1. 'atof' gibt auch' double' zurück: http://pubs.opengroup.org/onlinepubs/007904875/functions/atof.html – ArjunShankar
2. '% d' steht für Integer. Verwende '% f'. – ArjunShankar