Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

strtod, strtof, strtold - Zeichenkette in Gleitkommazahl umwandeln

&pagelevel(4)&pagelevel

Definition

#include <stdlib.h>

double strtod(const char *s, char **endptr);
float strtof(const char *s, char **endptr);
long double strtold(const char *s, char **endptr);

Beschreibung

Diese Funktionen wandeln die Zeichenkette, auf die s zeigt, in eine Gleitkommazahl um. Die umzuwandelnde Zeichenkette kann wie folgt aufgebaut sein:

[{ tab |'BLANK'}...][+|-][ digit ...][.][ digit ...][{E|e}[+|-] digit ...]
oder
[{ tab |'BLANK'}...][+|-]0{X|x}[ hexdigit ...][.][ hexdigit ...][{P|p}[+|-] digit ...]

Für tab sind alle Zwischenraumzeichen zulässig (siehe Definition bei isspace() ).

strtod() erkennt auch Zeichenketten, die mit Ziffern beginnen, dann aber mit beliebigen Zeichen enden. In diesem Fall schneidet strtod() zunächst den Ziffernteil ab und wandelt ihn in einen Gleitkommawert um.

Zusätzlich erhält man von strtod() über das zweite Argument endptr vom Typ char ** einen Zeiger (*endptr) auf das erste nicht umwandelbare Zeichen in der Zeichenkette s; jedoch nur, wenn endptr nicht als Nullzeiger übergeben wird.

Ist endptr ein Nullzeiger, wird strtod() wie die Funktion atof() ausgeführt:

atof(s) entspricht strtod(s, (char **)NULL) oder auch strtod(s, NULL).

Wenn endptr kein Nullzeiger ist, wird ein Zeiger (*endptr) auf das erste Zeichen in s zurückgeliefert, das die Umwandlung beendet. Wenn überhaupt keine Umwandlung möglich ist, wird *endptr auf die Anfangsadresse der Zeichenkette s gesetzt.

Returnwert

Gleitkommazahl vom Typ double, float oder long double



für Zeichenketten, die eine wie oben beschriebene Struktur haben und einen Zahlenwert darstellen, der im zulässigen Gleitkommabereich liegt.


0

für Zeichenketten, die nicht der oben beschriebenen Syntax entsprechen bzw. nicht mit umwandelbaren Zeichen beginnen.


+/-HUGE_VAL
+/-HUGE_VALF
+/-HUGE_VALL

abhängig vom Funktionstyp und Vorzeichen des Ergebnisses, für Zeichenketten, deren Zahlenwert außerhalb des zulässigen Gleitkommabereichs liegt.
errno wird gesetzt, um den Fehler anzuzeigen.

Fehler

strtod(), strtof() und strtold() schlagen fehl, wenn gilt:


ERANGE

Der Returnwert verursacht einen Über- oder Unterlauf.


EINVAL

Umwandlung konnte nicht ausgeführt werden.

Hinweis

Das Dezimalzeichen in der umzuwandelnden Zeichenkette wird durch die Lokalität (Kategorie LC_NUMERIC) beeinflusst. Voreingestellt ist der Punkt.

Siehe auch

atof(), atoi(), atol(), isspace(), strtol(), strtoul(), stdlib.h.