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 strtof

La fonction strtod La fonction strtol


Entête à inclure

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

Fonction strtof

float strtof( const char * theString, char ** end ); 

Cette fonction, signifiant string to float, permet de transformer une chaîne de caractères, contenant la représentation textuelle d'un nombre flottant en une donnée typée float.

Paramètres

Valeur de retour

La valeur de retour, de type float, contient la valeur associée à la chaîne de caractères passée en paramètre.

Si aucune valeur flottante n'a pu être décodée à partir de la chaîne alors la valeur de retour sera 0.0 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.0" du cas ou aucune valeur flottante ne peut être décodée.

Si la valeur à décoder n'est pas représentable par le type float, la variable errno sera fixée à ERANGE et la fonction retournera la valeur HUGE_VALF.

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 
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>


int main() {

    // Exemple d'utilisation sur une mauvaise valeur
    char * badString = "notPossible";
    char * endPtr;
    float value = strtof( badString, &endPtr );

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

    // Exemple d'utilisation sur une valeur correct
    char * correctString = "123.456";
    value = strtof( correctString, &endPtr );
    
    if ( endPtr == badString ) {
        printf( "Bad string format: %s - value == %lf\n", endPtr, value );
    } else {
        printf( "value == %7.3f\n", value );
    }
    
    // Exemple d'extraction de plusieurs valeurs consécutives dans la chaîne.
    correctString = "12.3 8.75 10.11";
    double value1 = strtof( correctString, &endPtr );
    assert( correctString != endPtr );
    
    correctString = endPtr;
    double value2 = strtof( correctString, &endPtr );
    assert( correctString != endPtr );
    
    correctString = endPtr;
    double value3 = strtof( correctString, &endPtr );
    assert( correctString != endPtr );

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


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

Voici l'affichage produit par cet exemple :

$> gcc -o Essai Essai.c
$> ./Essai
Bad string format: notPossible - value == 0.000000
value == 123.456
Values :  12.300 -   8.750 -  10.110
$> 

Sujets connexes

<stdlib.h>
atol
strtod
strtol
strtoll
strtold
strtoul
strtoull


La fonction strtod La fonction strtol