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.

CETTE PAGE DOCUMENTE AUSSI :