1. NOM▲

strtoul, strtoull, strtouq - Convertir une chaîne en entier long non signé

2. SYNOPSIS ▲

 
Sélectionnez
#include <stdlib.h>
unsigned long int strtoul(const char *nptr, char **endptr, int base);
unsigned long long int strtoull(const char *nptr, char **endptr,
                                int base);



Exigences de macros de test de fonctionnalités pour la glibc (consultez feature_test_macros(7)) :

strtoull() :
    XOPEN_SOURCE >= 600 || _BSD_SOURCE || _SVID_SOURCE || _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
ou cc -std=c99

3. DESCRIPTION ▲

La fonction strtoul() convertit le début de la chaîne nptr en une valeur de type unsigned long int 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 de type unsigned long int, en s'arrêtant au premier caractère qui ne soit pas un chiffre valable. Dans les bases supérieures à 10, la lettre « A » (majuscule ou minuscule) représente 10, « B » représente 11, et ainsi de suite jusqu'à « Z » représentant 35.

Si endptr n'est pas NULL, strtoul() stocke l'adresse du premier caractère invalide dans *endptr. S'il n'y avait aucun chiffre valide, strtoul() 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 strtoull() travaille comme strtoul() mais renvoie une valeur entière de type unsigned long long int.

4. VALEUR RENVOYÉE ▲

La fonction strtoul() renvoie soit le résultat de la conversion, soit, s'il y avait un signe moins, l'opposé du résultat de la conversion représentée comme une valeur non signée, à moins que la valeur originale provoque un débordement, auquel cas strtoul() renvoie ULONG_MAX et errno contient le code d'erreur ERANGE. La même chose est vraie pour strtoull() avec ULLONG_MAX à la place de ULONG_MAX.

5. ERREURS ▲

  • EINVAL
        (pas dans C99) La base indiquée n'est pas supportée.
  • ERANGE
        La valeur retournée est hors limites.

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).

6. CONFORMITÉ ▲

strtoul() est conforme à SVr4, C89, C99 et POSIX-2001, et strtoull() à C99 et POSIX.1-2001.

7. NOTES ▲

Comme strtoul() peut légitimement renvoyer 0 ou ULONG_MAX (ULLONG_MAX pour strtoull()) à la fois en cas de succès et d'échec, le programme appelant doit positionner errno à 0 avant l'appel, et déterminer si une erreur s'est produite en regardant si errno a une valeur non nulle après l'appel. Dans des localisations autre que « C », d'autres chaînes peuvent être acceptées. Par exemple, un signe séparateur de milliers pour la localisation actuelle peut être accepté.

BSD a aussi

 
Sélectionnez
u_quad_t strtouq(const char *nptr, char **endptr, int base);

avec une définition exactement analogue. Suivant l'architecture, cela peut être équivalent à strtoull() ou strtoul(). Des valeurs négatives sont considérées comme valides, et sont converties en une valeur de type unsigned long int équivalente sans avertissement.

8. EXEMPLE ▲

Consultez l'exemple dans la page de manuel strtol(3) ; l'utilisation des fonctions décrites dans cette page de manuel est identique.

9. VOIR AUSSI ▲

atof(3), atoi(3), atol(3), strtod(3), strtol(3)

10. COLOPHON ▲

Cette page fait partie de la publication 3.52 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse http://www.kernel.org/doc/man-pages/.

11. TRADUCTION ▲

Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.

Christophe Blaess <http://www.blaess.fr/christophe/> (1996-2003), Alain Portal <http://manpagesfr.free.fr/> (2003-2006). Nicolas François et l'équipe francophone de traduction de Debian (2006-2009).

Veuillez signaler toute erreur de traduction en écrivant à <>.

Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».