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 |
+ |