Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

strtol - Zeichenkette in ganze Zahl (long) umwandeln

&pagelevel(4)&pagelevel

Definition

#include <stdlib.h>

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

Beschreibung

strtol() wandelt die Zeichenkette, auf die s zeigt, in eine ganze Zahl vom Typ long int um. Die umzuwandelnde Zeichenkette kann wie folgt aufgebaut sein:

[{ tab | 'BLANK'} ...][{+ | -}][{0 | 0X}] digit ...

Für tab sind alle Zwischenraumzeichen zulässig (siehe Definition bei isspace()).

Für digit sind je nach der Basis (siehe base) die Ziffern 0 bis 9 und die Buchstabena (oder A) bis z (oder Z) zulässig.

strtol() erkennt auch Zeichenketten, die mit umwandelbaren Ziffern (auch Oktal- bzw. Sedezimal-Ziffern) beginnen, dann aber mit beliebigen Zeichen enden. In diesem Fall schneidet strtol() zunächst den Ziffernteil ab und wandelt ihn um.

Zusätzlich erhält man von strtol() über das zweite Argument endptr vom Typ char ** einen Zeiger auf das erste nicht umwandelbare Zeichen in der Zeichenkette s; jedoch nur, wenn endptr nicht als Nullzeiger übergeben wird.

Wenn überhaupt keine Umwandlung möglich ist, wird *endptr auf die Anfangsadresse der Zeichenkette s gesetzt.

Ein drittes Argument base bestimmt die Basis (z.B. Dezimal-, Oktal- oder Sedezimal-Basis) für die Umwandlung.

base ist eine ganze Zahl von 0 bis 36. Von Basis 11 bis 36 werden die Buchstaben a (oder A) bis z (oder Z) in der umzuwandelnden Zeichenkette als Ziffern angenommen, und zwar mit den entsprechenden Werten 10 (a/A) bis 35 (z/Z).

Falls base gleich 0 ist, wird die Basis folgendermaßen aus dem Aufbau der Zeichenkette s bestimmt:

führende 0

Basis 8

führendes 0X bzw. 0x

Basis 16

sonst

Basis 10

Falls mit Parameter base = 16 gerechnet wird, werden die Zeichen 0X bzw. 0x nach einem evtl. Vorzeichen in der Zeichenkette s ignoriert.

Returnwert

Ganzzahliger Wert vom Typ long int

 


für Zeichenketten, die eine wie oben beschriebene Struktur haben und einen Zahlenwert darstellen.

 

0

für Zeichenketten, die nicht der oben beschriebenen Syntax entsprechen

 

LONG_MAX bzw. LONG_MIN

 


bei Überlauf, abhängig vom Vorzeichen.

Fehler

strtol() schlägt fehl, wenn gilt: 

 

ERANGE

Der Returnwert verursacht einen Überlauf.

 

EINVAL

Der Wert von base wird nicht unterstützt.

Hinweis

Ist endptr ein Nullzeiger und base gleich 10, wird strtol() wie die Funktion atol() ausgeführt:

atol(s) entspricht strtol(s, NULL, 10).

Siehe auch

atol(), atoi(), isalpha(), strtod(), strtoul(), stdlib.h.