Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

Fonction strtoull (C99)

La fonction strtoul La fonction system


Entête à inclure

#include <stdlib.h>  // <cstdlib> en C++

Fonction strtoll (C99)

unsigned long long strtoull( const char * theString, char ** end, int base ); 

Cette fonction, signifiant string to unsigned long long, permet de transformer une chaîne de caractères, contenant la représentation textuelle d'un entier, en un entier très long non signé (type unsigned long long ou unsigned long long int : ce sont des synonymes).

Attention : cette fonction est disponible à partir de la version C99 ISO du langage. De même, le type long long a été introduit dans cette norme C99 ISO. Si vous utilisez un compilateur C++, cette fonction necessitera un compilateur compatible C++11.

Paramètres

Valeur de retour

La valeur de retour, de type unsigned long long (ou unsigned long long int), contient la valeur associée à la chaîne de caractères passée en paramètre.

Si aucun entier n'a pu être décodé de la chaîne alors la valeur de retour sera 0ULL et le pointeur stocké à l'intérieur du pointeur end, passé en second paramètre, sera égal à theString (sauf si end est null, bien entendu). C'est de cette manière que vous pourrez distinguer le cas ou la chaîne de caractères contient "0" du cas ou aucun entier ne peut être décodé.

Si la valeur à décoder et en dehors des bornes du type unsigned long long, la variable errno sera fixée à ERANGE et la fonction retournera une valeur ULLONG_MIN ou ULLONG_MAX (définie dans <limits.h> ou <climits> en C++).

Exemple de code

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
 30 
 31 
 32 
 33 
 34 
 35 
 36 
 37 
 38 
 39 
 40 
 41 
 42 
 43 
 44 
 45 
 46 
 47 
 48 
 49 
 50 
 51 
 52 
 53 
 54 
 55 
 56 
 57 
 58 
 59 
 60 
 61 
 62 
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>


int main() {


    // Exemple d'utilisation sur une mauvaise valeur
    char * badString = "notPossible";
    char * endPtr;
    unsigned long long value = strtol( badString, &endPtr, 10 ); 

    if ( endPtr == badString ) {
        printf( "Bad string format: %s - value == %llu\n", endPtr, value );
    } else {
        printf( "value == %llu\n", value );
    }

    // Exemple d'utilisation sur une valeur correct
    char * correctString = "123456";
    value = strtol( correctString, &endPtr, 10 ); 
    
    if ( endPtr == badString ) {
        printf( "Bad string format: %s - value == %llu\n", endPtr, value );
    } else {
        printf( "value == %llu\n", value );
    }
    
    // Exemple d'extraction de plusieurs valeurs consécutives dans la chaîne.
    correctString = "123 456 789";
    unsigned long long value1 = strtol( correctString, &endPtr, 10 ); 
    assert( correctString != endPtr );
    
    correctString = endPtr;
    unsigned long long value2 = strtol( correctString, &endPtr, 10 ); 
    assert( correctString != endPtr );
    
    correctString = endPtr;
    unsigned long long value3 = strtol( correctString, &endPtr, 10 ); 
    assert( correctString != endPtr );

    printf( "Values : %llu - %llu - %llu\n", value1, value2, value3 );

    // Exemple d'extraction de plusieurs valeurs avec détermination de la base.
    correctString = "123 010 0xFFFF";
    value1 = strtol( correctString, &endPtr, 0 ); 
    assert( correctString != endPtr );
    
    correctString = endPtr;
    value2 = strtol( correctString, &endPtr, 0 ); 
    assert( correctString != endPtr );
    
    correctString = endPtr;
    value3 = strtol( correctString, &endPtr, 0 ); 
    assert( correctString != endPtr );

    printf( "Values : %llu - %llu - %llu\n", value1, value2, value3 );


    return EXIT_SUCCESS;
}
Exemple d'utilisation de la fonction strtoull

Voici l'affichage produit par cet exemple :

$> gcc -o Essai Essai.c
$> ./Essai
Bad string format: notPossible - value == 0
Value == 123456
Values : 123 - 456 - 789
Values : 123 - 8 - 65535
$> 

Sujets connexes

<stdlib.h>
atoll
strtod
strtof
strtol
strtold
strtoll
strtoul


La fonction strtoul La fonction system