strtol, wcstol

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu stdlib.h - Index


Header-Datei

stdlib.h

Kategorie

Konvertierungsroutinen, mathematische Routinen

Prototyp

long strtol(const char *s, char **endptr, int radix);

long wcstol(const wchar_t *s, wchar_t **endptr, int radix);

Beschreibung

Konvertiert einen String in einen Wert des Typs long.

strtol konvertiert den String s in einen Wert des Typs long. s ist eine Folge von Zeichen, die als long-Wert interpretiert werden können; die Zeichenfolge muss folgendem generischen Format entsprechen:

[Whitespace-Zeichen] [Vorzeichen] [0] [x] [zzz]

wobei gilt:



[Whitespace-Zeichen]

=

optionale Whitespace-Zeichen

[Vorzeichen]

=

optionales Vorzeichen (+ oder -)

[0]

=

optionale Null (0)

[x]

=

optionales x oder X

[zzz]

=

optionale Ziffernzeichen



strtol beendet die Konvertierung des Strings bei dem ersten Zeichen, das nicht erkannt wird.

Liegt radix im Bereich von 2 bis 36, wird der long-Wert als Wert der Basis radix angegeben. Ist radix 0, legen die ersten Zeichen von s die Basis des zu konvertierenden Werts fest.

Der Wert 1 von radix wird als ungültiger Wert betrachtet. Wenn radix kleiner als 0 oder größer als 36 ist, wird das Argument als ungültiger Wert angesehen.

Jeder ungültige Wert von radix bewirkt, dass das Ergebnis 0 wird. Der Zeiger auf das nächste Zeichen, *endptr, wird so gesetzt, dass er auf den Anfang des Strings zeigt.

Soll der Wert von s als Oktalwert interpretiert werden, werden nur die Zeichen von 0 bis 7 erkannt, alle anderen Zeichen dagegen nicht.

Soll der Wert von s als Dezimalwert interpretiert werden, werden nur die Zeichen von 0 bis 9 erkannt und alle anderen Zeichen nicht.

Ist der Wert von s als ein Wert einer anderen Basis zu interpretieren, werden nur die Ziffern und Buchstaben erkannt, die zur Darstellung von Werten dieser Basis verwendet werden. (Hat radix beispielsweise den Wert 5, werden nur die Ziffern 0 bis 4 erkannt; hat radix den Wert 20, werden nur die Ziffern 0 bis 9 sowie die Zeichen A bis J erkannt.)

Ist endptr nicht NULL, setzt strtol *endptr auf das Zeichen, bei dem die Konvertierung beendet wurde (*endptr = &stopper).

Rückgabewert

strtol gibt den Wert des konvertierten Strings zurück oder 0, wenn ein Fehler aufgetreten ist.

Beispiel



 #include <stdlib.h>
 #include <stdio.h>
 int main(void)
 {
    char *string = "87654321", *endptr;
    long lnumber;
    /* strtol konvertiert string in einen long-Wert */
    lnumber = strtol(string, &endptr, 10);
    printf("string = %s  long = %ld\n", string, lnumber);
    return 0;
 }



Portabilität



POSIX Win32 ANSI C ANSI C++

strtol

+

+

+

+

wcstol

+

+

+