Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ strtol(3C) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ctype(3C)

strtod(3C)

scanf(3S)

stdlib(5)

strtol(3C)                                                       strtol(3C)

NAME
     strtol, strtoul, atol, atoi, strtoll, strtoull, atoll - Zeichenkette
     in ganze Zahl umwandeln

SYNTAX
     #include <stdlib.h>

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

     unsigned long int strtoul(const char *str, char **endptr, int base);

     long int atol(const char *str);

     int atoi(const char *str);

     long long strtoll(const char *str, char **ptr, int base);

     unsigned long long strtoull(const char *str, char **ptr, int base);

     long long atoll(const char *str);

BESCHREIBUNG
     strtol() liefert den Wert der Zeichenkette str als long int zurück.
     Die Zeichenkette wird bis zum ersten Zeichen verarbeitet, welches
     inkonsistent mit der Basis ist. Vorangestellte Leerzeichen (wie durch
     isspace() in ctype(3C) definiert) werden ignoriert.

     Wenn der Wert von endptr nicht (char **)NULL ist, wird in endptr ein
     Zeiger auf das Zeichen gesetzt, welches die Verarbeitung abgebrochen
     hat. Kann keine ganze Zahl gebildet werden, wird endptr auf str
     gesetzt und Null zurückgegeben.

     Ist base positiv (und nicht größer als 36), wird dieser Wert als Basis
     für die Umwandlung verwendet. Nach einem optionalen Vorzeichen werden
     führende Nullen ignoriert; ist base gleich 16, so werden die Zeichen
     "0x" oder "0X" ebenfalls ignoriert.

     Wenn base gleich Null ist, bestimmt die Zeichenkette selbst die Basis;
     dies geschieht folgendermaßen: Nach einem optionalen Vorzeichen zeigt
     eine Null an, daß eine oktale Umwandlung durchgeführt werden soll;
     wird die Zeichenkette "0x" oder "0X" erkannt, wird eine hexadezimale
     Umwandlung durchgeführt; ansonsten wird eine dezimale Umwandlung aus-
     geführt.

     Die Umwandlung von long nach int kann durch Zuweisung oder durch eine
     explizite Typkonvertierung stattfinden.

     Würde der durch str dargestellte Wert einen Überlauf verursachen, wird
     LONGMAX oder LONGMIN zurückgeliefert (abhängig vom Vorzeichen), und
     errno wird auf ERANGE gesetzt.





Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

strtol(3C)                                                       strtol(3C)

     strtoul() ähnelt strtol() mit der Ausnahme, daß strtoul() eine vorzei-
     chenlose Zahl vom Typ long int für str zurückgibt. Würde der Wert aus
     str einen Überlauf verursachen, wird ULONGMAX zurückgeliefert und
     errno auf den Wert ERANGE gesetzt.

     strtoll() ähnelt strtol() mit der Ausnahme, daß strtoll() eine Zahl
     vom Typ long long int für str zurückgibt. Würde der Wert aus str einen
     Überlauf verursachen, wird ULONGMAX oder LONGLONGMIN (abhängig vom
     Vorzeichen des Werts) zurückgeliefert und errno auf den Wert ERANGE
     gesetzt.

     strtoull() ähnelt strtoll() mit der Ausnahme, daß strtoull() eine vor-
     zeichenlose Zahl vom Typ long long int für str zurückgibt. Würde der
     Wert aus str einen Überlauf verursachen, wird ULONGMAX zurückgelie-
     fert und errno auf den Wert ERANGE gesetzt.

     Abgesehen vom Verhalten beim Auftreten von Fehlern ist atol(str) äqui-
     valent mit:

          strtol(str, (char **)NULL, 10).

     Abgesehen vom Verhalten beim Auftreten von Fehlern ist atoi(str) äqui-
     valent mit:

          (int) strtol(str, (char **)NULL, 10).

     Abgesehen vom Verhalten beim Auftreten von Fehlern ist atoll(str)
     äquivalent mit:

          strtoll(str, (char **)NULL, 10).

ERGEBNIS
     Wenn strtol() mit dem Argument base größer als 36 aufgerufen wird,
     wird 0 zurückgegeben und errno auf EINVAL gesetzt.

FEHLER
     Die folgenden Beschreibungen der Fehlercodes sind funktionsspezifisch.
     Eine allgemeingültige Beschreibung finden Sie in introprm2(2) bzw. in
     errno(5).

     Die Funktion strtol() schlägt bei folgender Bedingung fehl:

     ERANGE      Der Rückgabewert ist nicht darstellbar.

     Die Funktion strtol() kann bei folgender Bedingung fehlschlagen:

     EINVAL      Der Wert von base wird nicht unterstützt.

     Die Funktion strtoul() schlägt bei folgenden Bedingungen fehl:

     EINVAL      Der Wert von base wird nicht unterstützt.



Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

strtol(3C)                                                       strtol(3C)

     ERANGE      Der Rückgabewert ist nicht darstellbar.

     Die Funktion strtoul() kann bei folgender Bedingung fehlschlagen:

     EINVAL      Es konnte keine Konversion vorgenommen werden.

HINWEISE
     Da der Rückgabewert im Fehlerfall nicht festgelegt ist, können Fehler
     nur wie folgt festgestellt werden: errno wird auf 0 gesetzt, dann wird
     die Funktion aufgerufen und errno geprüft. Wenn errno ungleich 0 ist,
     muß ein Fehler aufgetreten sein.

     strtol() akzeptiert als gültige Eingaben keine Werte mehr, die größer
     als LONGMAX sind. In diesem Fall ist strtoul() zu verwenden.

     Da bei nicht darstellbarem Rückgabewert bei atol() und atoi() das
     Ergebnis undefiniert ist, sollten Sie statt dieser Funktionen strtol()
     verwenden.

SIEHE AUCH
     ctype(3C), strtod(3C), scanf(3S), stdlib(5).

































Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026