Definition | #include <stdlib.h> long int strtol(const char *s, char **zg, int base);
Für tab sind alle Steuerzeichen für „Zwischenraum“ zulässig (siehe Definition bei Für Ziffer sind je nach der Basis (siehe base) die Ziffern 0 bis 9 und die Buchstaben a (oder A) bis z (oder Z) zulässig.
Zusätzlich erhält man von Ein drittes Argument base bestimmt die Basis (z.B. Dezimal-, Oktal- oder Sedezimal-Basis) für die Umwandlung. | |||||||
Parameter | const char *s Zeiger auf die umzuwandelnde Zeichenkette. char **zg Wenn zg kein NULL-Zeiger ist, wird ein Zeiger (*zg) auf das erste Zeichen in s zurückgeliefert, das die Umwandlung beendet. int base Ganze Zahl von 0 bis 36, die als Basis für die Berechnung verwendet werden soll. 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:
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 | |||||||
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, LONG_MIN abgängig vom Vorzeichen des Wertes. | |||||||
| wenn der richtige Wert außerhalb des Bereichs der darstellbaren Werte liegt | |||||||
Hinweis | Ist zg ein NULL-Zeiger und base gleich 10, wird | |||||||
Beispiel | #include <stdio.h> #include <stdlib.h> int main(void) { char *str1 = " 0x1ff"; char *str2 = "h0***"; char *end; long l; l = strtol(str1, &end, 0); /* Die Basis 16 wird aus der */ /* Zeichenkette str1 abgeleitet. */ printf("Erster Wert: %ld\n", l); /* 511 wird ausgegeben. */ l = strtol(str2, &end, 20); /* Basis = 20 */ printf("Zweiter Wert: %ld\n", l); /* 340 (17*20) wird ausgegeben. */ printf("Rest von str2: %s\n", end); /* "***" wird ausgegeben. */ return 0; } | |||||||
Siehe auch | atol, atoi, strtod, strtoll, strtoul, strtoull, wcstol, wcstoll, wcstoul, wcstoull |