Fonctions de la bibliothèque C -strtol()
Bibliothèque standard C - <stdlib.h>
Description
Fonctions de la bibliothèque Clong int strtol(const char *str, char **endptr, int base)Passer le paramètrestrLa chaîne pointée selon labase donnéeConvertit en un entier long (de type long int). La base doit être comprise entre 2 et 36 (inclus), ou la valeur spéciale 0.
Déclaration
Ci-dessous se trouve la déclaration de la fonction strtol().
long int strtol(const char *str, char **endptr, int base)
Paramètre
- str-- La chaîne à convertir en un entier long.
- endptr-- Une référence à un objet de type char*, dont la valeur est définie par la fonction àstrle caractère suivant la valeur numérique.
- base-- La base, qui doit être comprise entre 2 et 36 (inclus), ou la valeur spéciale 0. Si base vaut 0, la base de numération est déterminée par le préfixe de la chaîne : si la chaîne commence par '0x' ou '0X', elle est traitée comme hexadécimale ; si la chaîne commence par '0', elle est traitée comme octale ; sinon elle est traitée comme décimale.
Valeur de retour
La fonction renvoie la valeur entière longue convertie. Si la chaîne d'entrée ne respecte pas le format numérique, strtol() renvoie 0. Si le résultat de la conversion dépasse la plage représentable d'un entier long, un dépassement de capacité se produira et errno sera défini sur ERANGE. Vous pouvez utiliser la variable errno du fichier d'en-tête <errno.h> pour vérifier si un dépassement s'est produit.
Exemple
L'exemple suivant illustre l'utilisation de la fonction strtol().
Dans l'exemple suivant, nous convertissons la chaîne "12345" en un entier long. La fonction strtol() convertira cette chaîne en la valeur entière correspondante 12345. Comme nous avons spécifié base à 10, elle effectuera la conversion en décimal.
Exemple
#include <stdlib.h>
int main() {
char str[] = "12345";
char *endptr;
long int num;
num = strtol(str, &endptr, 10);
if (*endptr != '\0') {
printf("Échec de la conversion : la chaîne d'entrée n'est pas un entier valide."\n");
} else {
printf("Résultat de la conversion : %ld\n", num);
}
return 0;
}
Compilons et exécutons le programme ci-dessus, ce qui produira le résultat suivant :
转换结果:12345
Si la chaîne d'entrée ne peut pas être complètement convertie en un entier, la fonction strtol() renvoie la partie convertie avec succès, et endptr pointe vers le premier caractère de la partie non convertie. Dans cet exemple, endptr pointe vers le caractère nul '\0' à la fin de la chaîne, ce qui indique que l'intégralité de la chaîne d'entrée a été convertie avec succès en un entier.
Si la chaîne d'entrée contient des caractères non numériques, comme "12ab", alors endptr pointera vers la position de début de "ab", ce qui indique que la conversion a échoué.
Exemple
#include <stdlib.h>
int main() {
char str[] = "12ab";
char *endptr;
long int num;
num = strtol(str, &endptr, 10);
if (*endptr != '\0') {
printf("Échec de la conversion : la chaîne d'entrée n'est pas un entier valide. Partie non convertie : %s\n", endptr);
} else {
printf("Résultat de la conversion : %ld\n", num);
}
return 0;
}
Dans l'exemple ci-dessus, nous convertissons la chaîne "12ab" en un entier long. La fonction strtol() tentera de convertir cette chaîne en la valeur entière correspondante 12, mais comme la chaîne contient les caractères non numériques "ab", la conversion ne peut pas être terminée.
La sortie sera :
转换失败:输入字符串不是一个有效的整数。未转换部分:abautres extensions