atof() Rückgabewert bei Fehler?

Gast #815474
Lesenswert?

Hi,

ich wollte wissen, was die atof()-Funktion bei fehler zurückliefert.

Beispiel:
1
//(1)richtig
2
float fl;
3
char chr[]="1.2345";
4

5
fl=atof(chr);
6

7

8
//(2)falsch
9
float fl;
10
char chr[]="143s5,z345";
11

12
fl=atof(chr);

wenn ich die (2) ausführe, wird mir alles bis "s" umgewandelt. Da das 
"s" nicht erlaubt ist, wird abgebrochen und "fl=143.000000" gesetzt.

Gibt es eine Funktion oder Möglichkeit auf Fehler zu prüfen?
Wenn "143s5,z345" kein float-Wert ist, will ich nicht dass 
"fl=143.000000" wird, sondern als Rückgabewert 0 / -1 oder sonst was 
erhalte
#815561
Lesenswert?

Flo wrote:
> und von Geschwindigkeit her, ist es auch so schnell/langsam wie atof()?

Die die Funktion etwas mehr macht als atof, wird sie wohl kaum
schneller sein.
Die eigentliche Arbeit, nämlich das Umwandeln, wird aber wohl
in beiden Funktionen gleich gemacht werden. Also kann man wohl
davon ausgehen, dass sie in etwa gleich schnell sein wird.
Gast #815597
Lesenswert?

die Funktion inkremmentiert wohl nur zusätzlich den (**endptr)-Zeiger.

(**endptr)-Zeiger zeigt nach der Umwandlung auf die Position, bis wohin 
die Umwandlung stattgefunden hat


Danke für eure Hilfe, klappt alles wunderbar :-)
Gast #816482
Lesenswert?

>> und von Geschwindigkeit her, ist es auch so schnell/langsam wie
>> atof()?
>
> Die die Funktion etwas mehr macht als atof, wird sie wohl kaum
> schneller sein.

Müßte ich atof() selbst definieren, würde ich es intern einfach strtof() 
aufrufen lassen, wodurch dann letzteres durchaus schneller sein kann.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren