BEZEICHNUNG¶
strtod - konvertiert eine ASCII-Zeichenkette in eine Fließkommazahl
ÜBERSICHT¶
#include <stdlib.h>
double strtod(const char *nptr, char
**endptr);
float strtof(const char *nptr, char
**endptr);
long double strtold(const char *nptr, char
**endptr);
Mit Glibc erforderliche Makros (siehe
feature_test_macros(7)):
strtof(),
strtold():
_XOPEN_SOURCE >= 600 ||
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L;
oder
cc -std=c99
BESCHREIBUNG¶
Die Funktionen
strtod(),
strtof(), and
strtold() wandeln
den ersten Teil der Zeichenkette, auf die
nptr zeigt, in die
entsprechende
double-,
float- und
long double-Darstellung
um.
Es wird die folgende Form (des Anfangs) der Zeichenkette erwartet : optionale
Leerzeichen, wie sie von
isspace(3) erkannt werden, ein optionales
Plus- '+') oder Minus-Zeichen ('-') und dann entweder (i) eine Dezimalzahl
oder (ii) eine Hexadezimalzahl oder (iii) ein unendlicher Wert oder (iv) keine
Zahl (ein NAN, not-a-number).
Eine
Dezimalzahl besteht aus einer nicht leeren Folge von Dezimalziffern,
die möglicherweise ein Radix-Zeichen enthält (Dezimalpunkt, von der
Locale abhängig, meistens '.'), optional gefolgt von einem dezimalen
Exponenten. Ein dezimaler Exponent besteht aus einem 'E' oder 'e', gefolgt von
einer nicht leeren Folge von Dezimalziffern. Er bedeutet eine Multiplikation
mit einer Potenz von 10.
Eine
Hexadezimalzahl besteht aus einem »0x« oder »0X«
gefolgt von einer nicht leeren Folge von Hexadezimalziffern (die vielleicht
ein Radix-Zeichen enthält), der optional ein binärer Exponent folgt.
Ein binärer Exponent besteht aus einem 'P' oderr 'p', gefolgt von einem
optionalen Plus- oder Minuszeichen, gefolgt von einer nicht leeren Folge von
Dezimalziffern, die für die Multiplikation mit einer Potenz von 2 steht.
Mindestens ein Radix-Zeichen und ein binärer Exponent müssen
vorhanden sein.
Ein
unendlicher Wert ist ungeachtet der Gross- oder Kleinschreibung
entweder »INF« oder »INFINITY«.
Ein
NAN ist (ungeachtet der Gross- oder Kleinschreibung) ein
»NAN«, optional gefolgt von'(', einer Zeichenfolge, gefolgt von ')'.
Die Zeichenfolge beschreibt auf implementationsabhängige Weise den Typ
des NaNs.
RÜCKGABEWERT¶
Diese Funktionen liefern den umgewandelten Wert zurück, wenn er existiert.
Wenn
endptr nicht
NULL ist, wird an dem durch
endptr
bestimmten Ort ein Zeiger auf das erste Zeichen gespeichert, das nicht mehr
zur Konvertierung herangezogen wurde.
Wenn keine Konvertierung stattgefunden hat, wird 0 zurückgeliefert und der
Wert von
nptr wird am Ort gespeichert, auf den
endptr weist.
Falls der korrekte Wert einen Überlauf verursacht, wird plus oder minus
HUGE_VAL (
HUGE_VALF,
HUGE_VALL) zurückgegeben
(abhängig vom Vorzeichen des Wertes) und
ERANGE wird in
errno gespeichert. Verursacht der korrekte Werte eine
Bereichsunterschreitung, wird 0 zurückgegeben und
ERANGE wird in
errno gespeichert.
FEHLER¶
- ERANGE
- Überlauf oder Bereichsunterschreitung aufgetreten
C89 beschreibt
strtod(), C99 beschreibt die beiden anderen Funktionen.
ANMERKUNGEN¶
Da 0 ein legitimer Rückgabewert sowohl bei Erfolg als auch bei Misserfolg
zurückgegeben werden kann, sollte das aufrufende Programm
errno
vor dem Aufruf auf 0 setzen und nach dem Aufruf prüfen, ob
errno
einen Wert ungleich Null hat.
BEISPIEL¶
Siehe das Beispiel in der Handbuchseite von
strtol(3); die Verwendung der
in dieser Handbuchseite beschriebenen Funktionen ist ähnlich.
SIEHE AUCH¶
atof(3),
atoi(3),
atol(3),
strtol(3),
strtoul(3)
KOLOPHON¶
Diese Seite ist Teil der Veröffentlichung 3.42 des Projekts Linux-
man-pages. Eine Beschreibung des Projekts und Informationen, wie Fehler
gemeldet werden können, finden sich unter
http://www.kernel.org/doc/man-pages/.
ÜBERSETZUNG¶
Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Eberhard
Schauer <Martin.E.Schauer@gmx.de> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public
License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird
KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken
Sie bitte eine E-Mail an <debian-l10n-german@lists.debian.org>.