Provided by:
manpages-fr_1.67.0-1_all 
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
atof(3), atoi(3), atol(3), strtod(3), strtoul(3)
TRADUCTION
Christophe Blaess, 1996-2003.