strtod, _strtold, wcstod, _wcstold
Nach oben zu stdlib.h - Index
Header-Datei
stdlib.h
Kategorie
Konvertierungsroutinen, mathematische Routinen
Prototyp
double strtod(const char *s, char **endptr);
double wcstod(const wchar_t *s, wchar_t **endptr);
long double _strtold(const char *s, char **endptr);
long double _wcstold(const wchar_t *s, wchar_t **endptr);
Beschreibung
Konvertiert einen String in einen Wert des Typs double oder long double.
strtod konvertiert den String s in einen Wert des Typs double. s ist eine Folge von Zeichen, die als double-Wert interpretiert werden können. Die Zeichenfolge muss folgendem generischen Format entsprechen:
[Whitespace-Zeichen] [Vorzeichen] [zzz] [.] [zzz] [Format[Vorzeichen]zzz]
wobei gilt:
[Whitespace-Zeichen] |
= |
optionale Whitespace-Zeichen |
[Vorzeichen] |
= |
optionales Vorzeichen (+ oder -) |
[zzz] |
= |
optionale Ziffernzeichen |
[Format] |
= |
optionales e oder E |
[.] |
= |
optionales Dezimalzeichen |
strtod erkennt auch +INF und -INF für positive und negative unendliche Werte sowie +NAN und -NAN (not a number, d. h. keine Zahl).
Es folgen einige Beispiel-Strings, die strtod in einen double-Wert konvertieren kann:
+ 1231.1981 e-1
502.85E2
+ 2010.952
strtod beendet die Konvertierung des Strings beim ersten Zeichen, das nicht als passender Teil eines double-Werts interpretiert werden kann.
Ist endptr nicht NULL, setzt strtod *endptr auf das Zeichen, bei dem die Konvertierung beendet wurde (*endptr = &stopper). endptr ist für die Fehlerermittlung nützlich.
_strtold ist die long double-Version der Funktion; sie konvertiert einen String in einen Wert des Typs long double.
Rückgabewert
Diese Funktionen geben den Wert von s als einen Wert des Typs double (strtod) oder long double (_strtold) zurück. Im Fall eines Überlaufs geben sie plus oder minus HUGE_VAL (strtod) bzw. _LHUGE_VAL (_strtold) zurück.
Beispiel
#include <stdio.h> #include <stdlib.h> int main(void) { char input[80], *endptr; double value; printf("Enter a floating point number:"); gets(input); value = strtod(input, &endptr); printf("The string is %s the number is %lf\n", input, value); return 0; }
Portabilität
POSIX | Win32 | ANSI C | ANSI C++ | |
---|---|---|---|---|
strtod |
+ |
+ |
+ |
+ |
_strtold |
+ |
|||
wcstod |
+ |
+ |
+ | |
_wcstold |
+ |