strtod, _strtold, wcstod, _wcstold

Aus RAD Studio
Wechseln zu: Navigation, Suche

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

+