zion - strtod
Nom
strtod, strtof, strtold - Conversion d'une chaîne ASCII en nombre réel.
Résumé
#include <stdlib.h> double strtod (const char * nptr , char ** endptr ); float strtof(const char * nptr , char ** endptr ); long double strtold(const char * nptr , char ** endptr );
Description
Les fonctions strtod , strtof , et strtold convertissent la portion initiale de la chaîne pointée par nptr en un réel de type double , float , et long double respectivement. La (portion initiale de la) chaîne attendue est de la forme suivante :
Des espaces éventuels en tête, ou des caractères interprétes comme tels par isspace(3) |
Un éventuel signe plus (``+'') ou moins (``-'') |
Un nombre décimal ou hexadécimal, ou un infini, ou encore un non-nombre NAN (not-a-number). |
Un nombre décimal consiste en une séquence non-vide de chiffres décimaux, pouvant contenir un point décimal (dépendant de la localisation, mais habituellement ``.''), suivi éventuellement d'un exposant décimal. Ce dernier est constitué d'un ``E'' ou ``e'' suivi éventuellement du signe plus ou du signe moins, puis une séquence non-vide de de chiffres décimaux, indiquant la multiplication par une puissance de 10.
Un nombre hexadécimal commence ``0x'' ou ``0X'', suivi d'une séquence non-vide de chiffres hexadécimaux, pouvant contenir un point décimal suivi éventuellement d'un exposant binaire. Ce dernier est constitué d'un ``P'' ou ``p'' suivi éventuellement du signe plus ou du signe moins, puis une séquence non-vide de de chiffres décimaux, indiquant la multiplication par une puissance de 2. Il ne peut y avoir plus d'un point ou d'un exposant binaire.
Un infini est soit ``INF'', soit ``INFINITY'', sans tenir compte des différences entre majuscules et minuscules.
Un non-nombre est ``NAN'' (sans différences majuscules/minuscules) suivi éventuellement par `(', une séquence de caractères, et `)'. La chaîne de caractères indique le type de non-nombre de manière dépendant de l'implémentation.
Valeur renvoyée
Ces fonctions renvoient la valeur convertie si c'est possible Si endptr n'est pas NULL , un pointeur sur le caractère suivant le dernier caractère converti y est stocké. Si aucune conversion n'est possible, la fonction renvoie zéro, et la valeur de nptr est stockée dans endptr . Si la valeur convertie déclenche un débordement (overflow), la fonction renvoie plus ou moins HUGE_VAL ( HUGE_VALF , HUGE_VALL ) et errno contient le code d'erreur ERANGE . Si la valeur convertie déclenche un debordement inférieur (underflow), la fonction renvoie 0, et errno contient le code d'erreur ERANGE .
Erreurs
ERANGE
Débordement. |
Conformité
ANSI C décrit strtod . C99 décrit les deux autres fonctions.
Voir aussi
atof (3), atoi (3), atol (3), strtol (3), strtoul (3)
Traduction
Christophe Blaess, 1996-2003.
Poster un commentaire