_atodbl, _atodbl_l, _atoldbl, _atoldbl_l, _atoflt _atoflt_l
Konvertiert eine Zeichenfolge in einen double (_atodbl)-, long double (_atoldbl)- oder float (_atoflt)-Wert.
int _atodbl(
_CRT_DOUBLE * value,
char * str
);
int _atodbl_l (
_CRT_DOUBLE * value,
char * str,
locale_t locale
);
int _atoldbl(
_LDOUBLE * value,
char * str
);
int _atoldbl_l (
_LDOUBLE * value,
char * str,
locale_t locale
);
int _atoflt(
_CRT_FLOAT * value,
const char * str
);
int _atoflt_l(
_CRT_FLOAT * value,
const char * str,
locale_t locale
);
Parameter
value
Der double-, long double- oder float-Wert, der erstellt wird, indem die Zeichenfolge in einen Gleitkommawert konvertiert wird. Diese Werte werden in eine Struktur eingeschlossen.str
Die zu analysierende Zeichenfolge, die in einen Gleitkommawert konvertiert wird.locale
Das zu verwendende Gebietsschema.
Rückgabewert
Gibt bei Erfolg 0 zurück. Mögliche Fehlercodes sind _UNDERFLOW oder _OVERFLOW, die in der Headerdatei "Math.h" definiert werden.
Hinweise
Diese Funktionen konvertieren eine Zeichenfolge in einen Gleitkommawert. Der Unterschied zwischen diesen Funktionen und der atof-Familie der Funktionen ist der, dass diese Funktionen keinen Gleitkommacode generieren und keine Hardwareausnahmen verursachen. Stattdessen werden Fehlerzustände als Fehlercodes gemeldet.
Wenn eine Zeichenfolge keine gültige Interpretation als Gleitkommawert aufweist, wird value auf 0 gesetzt und der Rückgabewert ist 0.
Die Versionen dieser Funktionen mit dem _l-Suffix sind identisch mit den Versionen, die keinen Suffix haben, verwenden jedoch den übergebenen Gebietsschemaparameter anstelle des aktuellen Threadgebietsschemas.
Anforderungen
Routinen |
Erforderlicher Header |
---|---|
_atodbl, _atoldbl, _atoflt _atodbl_l, _atoldbl_l, _atoflt_l |
<stdlib.h> |
Beispiel
// crt_atodbl.c
// Uses _atodbl to convert a string to a double precision
// floating point value.
#include <stdlib.h>
#include <stdio.h>
int main()
{
char str1[256] = "3.141592654";
char abc[256] = "abc";
char oflow[256] = "1.0E+5000";
_CRT_DOUBLE dblval;
_CRT_FLOAT fltval;
int retval;
retval = _atodbl(&dblval, str1);
printf("Double value: %lf\n", dblval.x);
printf("Return value: %d\n\n", retval);
retval = _atoflt(&fltval, str1);
printf("Float value: %f\n", fltval.f);
printf("Return value: %d\n\n", retval);
// A non-floating point value: returns 0.
retval = _atoflt(&fltval, abc);
printf("Float value: %f\n", fltval.f);
printf("Return value: %d\n\n", retval);
// Overflow.
retval = _atoflt(&fltval, oflow);
printf("Float value: %f\n", fltval.f);
printf("Return value: %d\n\n", retval);
return 0;
}