man strtol (Fonctions bibliothèques) - Convertir une chaîne en un entier long.
NOM
strtol, strtoll, strtoq - Convertir une chaîne en un entier long.
SYNOPSIS
#include <stdlib.h> long int strtol (const char *nptr, char **endptr, int base); long long int strtoll(const char *nptr, char **endptr, int base);
DESCRIPTION
La fonction strtol() convertit la chaîne nptr en un entier long en fonction de l'argument base, qui doit être dans l'intervalle 2 à 36 (bornes comprises), ou avoir la valeur spéciale 0.
La chaîne peut commencer par un nombre quelconque d'espaces ou de caractères interprétés comme tels par isspace(3). Un signe éventuel « + » ou « - » peut suivre. Si base vaut 0 ou 16, la chaîne peut inclure un préfixe « 0x » et le nombre sera interprété en base 16. Sinon, une base valant zéro est interprétée comme 10 (décimale) sauf si le caractère suivant est « 0 », auquel cas la base est 8 (octale).
Le reste de la chaîne est converti en une valeur entière longue, en s'arrêtant au premier caractère qui ne soit pas un chiffre valide. Dans les bases supérieures à 10, la lettre « A » (majuscule ou minuscule) représente 10, « B » represente 11, et ainsi de suite jusqu'à « Z » représentant 35.
Si endptr n'est pas NULL, strtol() stocke l'adresse du premier caractère invalide dans *endptr. S'il n'y avait aucun chiffre valide, strtol() stocke la valeur originale de nptr dans *endptr (et renvoie 0). En particulier, si *nptr n'est pas « \0 » et si **endptr vaut « \0 » en retour, la chaîne entière est valide.
La fonction strtoll() travaille comme strtol() mais renvoie une valeur entière de type "long long".
VALEUR RENVOYÉE
La fonction strtol() renvoie le résultat de la conversion, à moins qu'un débordement superieur (overflow) ou inférieur (underflow) se produise. Si un dépassement inférieur se produit, strtol() renvoie LONG_MIN. Si un dépassement supérieur se produit, strtol() renvoie LONG_MAX. Dans les deux cas, errno contient le code d'erreur ERANGE. La même chose est vraie pour strtoll() avec LLONG_MIN et LLONG_MAX à la place de LONG_MIN et LONG_MAX.
ERREURS
- ERANGE
- La chaîne n'était pas dans l'intervalle acceptable, la valeur a été arrondie.
- EINVAL
- (pas dans C99) La base donnée n'est pas supportée.
L'implémentation peut aussi mettre errno à EINVAL si aucune conversion n'a été réalisée (pas de chiffres trouvés, et renvoyé zéro).
NOTES
Dans des localisations autre que « C », d'autres chaînes peuvent être acceptées. (Par exemple, un signe séparateur de milliers peut être accepté).
BSD a aussi
quad_t strtoq(const char *nptr, char **endptr, int base);avec une définition exactement analogue. Suivant l'architecture, cela peut être équivalent à strtoll() ou strtol().
CONFORMITÉ
strol() : SVID 3, BSD 4.3, ISO 9899 (C99), POSIX. strtoll() : ISO 9899 (C99) et POSIX-2001.
VOIR AUSSI
TRADUCTION
Christophe Blaess, 1996-2003.