C-Bibliotheksfunktionen -strtol()
C-Standardbibliothek - <stdlib.h>
Beschreibung
C-Bibliotheksfunktionenlong int strtol(const char *str, char **endptr, int base)Übergeben Sie den ParameterstrDie Zeichenkette, auf die gemäß der angegebenenbase gezeigt wirdKonvertiert in eine lange Ganzzahl (vom Typ long int). Die Basis muss zwischen 2 und 36 (einschließlich) liegen oder den speziellen Wert 0 haben.
Deklaration
Nachfolgend ist die Deklaration der Funktion strtol() aufgeführt.
long int strtol(const char *str, char **endptr, int base)
Parameter
- str-- Der String, der in eine lange Ganzzahl umgewandelt werden soll.
- endptr-- Eine Referenz auf ein Objekt vom Typ char*, dessen Wert von der Funktion auf das nächste Zeichen nach dem numerischen Wert instrgesetzt wird.
- base-- Die Basis muss zwischen 2 und 36 (einschließlich) liegen oder den speziellen Wert 0 haben. Wenn base 0 ist, wird das Zahlensystem durch das Präfix des Strings bestimmt: Wenn der String mit '0x' oder '0X' beginnt, wird er als hexadezimal behandelt; wenn der String mit '0' beginnt, wird er als oktal behandelt; andernfalls wird er als dezimal behandelt.
Rückgabewert
Die Funktion gibt den konvertierten Wert als lange Ganzzahl zurück. Wenn der Eingabe-String nicht dem numerischen Format entspricht, gibt strtol() 0 zurück. Wenn das Konvertierungsergebnis den darstellbaren Bereich einer langen Ganzzahl überschreitet, tritt ein Überlauf auf und errno wird auf ERANGE gesetzt. Sie können die Variable errno aus der Header-Datei <errno.h> verwenden, um zu prüfen, ob ein Überlauf aufgetreten ist.
Beispiel
Das folgende Beispiel demonstriert die Verwendung der Funktion strtol().
Im folgenden Beispiel konvertieren wir den String "12345" in eine lange Ganzzahl. Die Funktion strtol() wandelt diesen String in den entsprechenden Ganzzahlwert 12345 um. Da wir base als 10 angegeben haben, wird die Konvertierung im Dezimalsystem durchgeführt.
Beispiel
#include <stdlib.h>
int main() {
char str[] = "12345";
char *endptr;
long int num;
num = strtol(str, &endptr, 10);
if (*endptr != '\0') {
printf("Konvertierung fehlgeschlagen: Die Eingabezeichenfolge ist keine gültige Ganzzahl.\n");
} else {
printf("Konvertierungsergebnis: %ld\n", num);
}
return 0;
}
Lassen Sie uns das obige Programm kompilieren und ausführen, was das folgende Ergebnis erzeugt:
转换结果:12345
Wenn die Eingabezeichenfolge nicht vollständig in eine Ganzzahl konvertiert werden kann, gibt die Funktion strtol() den erfolgreich konvertierten Teil zurück, und endptr zeigt auf das erste Zeichen des nicht konvertierten Teils. In diesem Beispiel zeigt endptr auf das Nullzeichen '\0' am Ende der Zeichenfolge, was anzeigt, dass die gesamte Eingabezeichenfolge erfolgreich in eine Ganzzahl konvertiert wurde.
Wenn die Eingabezeichenfolge nicht-numerische Zeichen enthält, wie z. B. "12ab", dann zeigt endptr auf die Anfangsposition von "ab", was anzeigt, dass die Konvertierung fehlgeschlagen ist.
Beispiel
#include <stdlib.h>
int main() {
char str[] = "12ab";
char *endptr;
long int num;
num = strtol(str, &endptr, 10);
if (*endptr != '\0') {
printf("Konvertierung fehlgeschlagen: Die Eingabezeichenfolge ist keine gültige Ganzzahl. Nicht konvertierter Teil: %s\n", endptr);
} else {
printf("Konvertierungsergebnis: %ld\n", num);
}
return 0;
}
Im obigen Beispiel konvertieren wir die Zeichenfolge "12ab" in eine lange Ganzzahl. Die Funktion strtol() versucht, diese Zeichenfolge in den entsprechenden Ganzzahlwert 12 zu konvertieren, aber weil die Zeichenfolge die nicht-numerischen Zeichen "ab" enthält, kann die Konvertierung nicht abgeschlossen werden.
Die Ausgabe lautet:
转换失败:输入字符串不是一个有效的整数。未转换部分:abWeitere Erweiterungen