wcstod(3C) wcstod(3C)
NAME
wcstod - Wide-Character-Zeichenkette umwandeln
SYNTAX
#include <wchar.h>
double wcstod(const wchart *nptr, wchart **endptr);
BESCHREIBUNG
Die Funktion wcstod() wandelt den ersten Teil der Zeichenkette aus
Wide-Character-Werten, auf die nptr zeigt, in eine Darstellung mit
doppelter Genauigkeit um. Zuerst zerlegt sie die Eingabe-Zeichenkette
aus Wide-Character-Werten in drei Teile: eine, möglicherweise leere,
Folge von Zwischenraumzeichen als Wide-Character-Werte (entsprechend
der Angabe durch die Funktion iswspace()) am Anfang, eine Folge, die
als Gleitpunktkonstante interpretiert wird, und schließlich eine Zei-
chenkette aus Wide-Character-Werten mit einem oder mehr nicht erkann-
ten Wide-Character-Werten, einschließlich abschließendem Nullbyte der
Eingabe-Zeichenkette aus Wide-Character-Werten. Dann wird versucht,
die mittlere Folge in eine Gleitpunktzahl umzuwandeln. Anschließend
wird das Ergebnis zurückgegeben.
Es wird erwartet, daß diese mittlere Folge folgendes Format hat: das
Vorzeichen + oder - (optional), eine nichtleere Folge von Ziffern, die
optional ein Dezimalzeichen enthalten kann, und schließlich ein optio-
naler Exponententeil. Ein Exponententeil besteht aus dem Zeichen e
bzw. E, gefolgt von einem Vorzeichen (optional) und einer oder mehr
dezimalen Ziffern. Diese mittlere Folge ist als die längste Teilfolge
der Eingabe-Zeichenkette aus Wide-Character-Werten definiert. Sie
beginnt mit dem ersten Wide-Character-Wert, der kein Zwischenraumzei-
chen ist und das erwartete Format aufweist. Diese Folge enthält keine
Wide-Character-Werte, wenn die Eingabe-Zeichenkette aus Wide-Charac-
ter-Werten leer ist oder nur aus Wide-Character-Werten besteht, die
Zwischenraumzeichen sind, bzw. wenn der erste Wide-Character-Wert, der
kein Zwischenraumzeichen ist, etwas anderes ist als ein Vorzeichen,
eine Ziffer oder ein Dezimalzeichen.
Wenn diese mittlere Folge das erwartete Format aufweist, wird die
Folge der Wide-Character-Werte, die mit der ersten Ziffer oder dem
Dezimalzeichen beginnt (je nachdem, was zuerst steht), als Gleitpunkt-
konstante entsprechend der Definition in der Sprache C interpretiert.
Der Unterschied besteht darin, daß das Dezimalzeichen statt des Punk-
tes verwendet wird und, wenn weder ein Exponententeil noch ein Dezi-
malzeichen erscheint, nach der letzten Ziffer in der Zeichenkette aus
Wide-Character-Werten ein Dezimalzeichen angenommen wird. Wenn die
Folge mit einem Minuszeichen beginnt, ist das Ergebnis der Umwandlung
negativ. Ein Zeiger auf die letzte Zeichenkette aus Wide-Character-
Werten wird in dem Objekt abgelegt, auf das endptr zeigt, wenn endptr
kein Nullzeiger ist.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
wcstod(3C) wcstod(3C)
Das Dezimalzeichen ist in der Locale des Programms definiert (Katego-
rie LSNUMERIC). In der POSIX-Locale, bzw. in einer Locale, in der das
Dezimalzeichen nicht definiert ist, ist das Dezimalzeichen standardmä-
ßig der Punkt (.).
In einer anderen Locale (nicht POSIX) können andere, implementations-
abhängige Formate für die mittlere Folge zulässig sein.
Wenn diese mittlere Folge leer ist oder nicht das erwartete Format
aufweist, wird keine Umwandlung durchgeführt. Der Wert von nptr wird
in dem Objekt abgelegt, auf das endptr zeigt, wenn endptr kein Null-
zeiger ist.
Da Null sowohl bei einem Fehler zurückgegeben wird als auch bei Erfolg
einen gültigen Rückgabewert darstellt, muß eine Anwendung, die auf
Fehler prüfen will, die folgenden Aktionen ausführen: errno wird auf 0
gesetzt, wcstod() aufgerufen und der Wert von errno überprüft. Falls
dieser Wert ungleich Null ist, wird angenommen, daß ein Fehler aufge-
treten ist.
Die Funktion wcstod() schlägt fehl, wenn:
ERANGE Der Wert, der zurückgegeben werden soll, würde zu einem
Überlauf oder einem Unterlauf führen.
ERGEBNIS
Die Funktion wcstod() gibt gegebenenfalls den konvertierten Wert
zurück. Wenn keine Umwandlung durchgeführt werden konnte, wird Null
zurückgegeben.
Wenn der richtige Wert außerhalb des Bereichs der darstellbaren Werte
liegt, wird HUGEVAL zurückgegeben (entsprechend dem Vorzeichen des
Wertes). errno wird auf ERANGE gesetzt.
Wenn der richtige Wert zu einem Unterlauf führen würde, wird Null
zurückgegeben. errno wird auf ERANGE gesetzt.
SIEHE AUCH
iswspace(3C), localeconv(3C), setlocale(3C), wcstol(3C), scanf(3S),
wchar(5).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98