Scroll to navigation

STRFROMD(3) Manuel du programmeur Linux STRFROMD(3)

NOM

strfromd, strfromf, strfroml - Convertir des nombres en virgule flottante en chaînes de caractères

SYNOPSIS

#include <stdlib.h>
int strfromd(char *restrict str, size_t n,
             const char *restrict format, double fp);
int strfromf(char *restrict str, size_t n,
             const char *restrict format, float fp);
int strfroml(char *restrict str, size_t n,
             const char *restrict format, long double fp);


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

strfromd(), strfromf(), strfroml() :

__STDC_WANT_IEC_60559_BFP_EXT__

DESCRIPTION

Ces fonctions convertissent une valeur en virgule flottante, fp, en une chaîne de caractères, str, selon une chaîne configurable format. Au plus n caractères sont écrits dans str.

L'octet NULL final (« \0 ») est écrit si et seulement si n est suffisamment large, autrement la chaîne écrite est tronquée à n caractères.

Les fonctions strfromd(), strfromf() et strfroml() sont équivalentes à :


snprintf(str, n, format, fp);


excepté pour la chaîne format.

Format de la chaîne de formatage

La chaîne format doit débuter par le caractère « % ». Il est suivi d'une précision optionnelle qui commence au caractère point (.), suivie d'un entier optionnel en base décimale. Si aucun entier n'est donné après le caractère point, une précision de zéro est utilisée. Enfin, la chaîne de formatage doit contenir un des indicateurs de conversion a, A, e, E, f, F, g ou G.

L'indicateur de conversion est appliqué en se basant sur le type de virgule flottante indiqué par le suffixe de la fonction. Ainsi, et à la différence de snprintf(), la chaîne de formatage ne contient pas de caractère de modification de longueur. Consultez snprintf(3) pour une description détaillée de ces indicateurs de conversion.

L'implémentation est conforme à la norme C99 concernant la conversion de NaN et de valeurs infinies :

Si fp est NaN, +NaN ou -NaN et f (ou a, e, g) est l'indicateur de conversion, la conversion se fait vers « nan », « nan » ou « -nan » respectivement. Si F (ou A, E, G) est l'indicateur de conversion, la conversion est alors faite vers « NAN » ou « -NAN ».

De même si fp est infini, il est converti en [-]inf ou [-]INF.

Une chaîne format malformée entraîne un comportement non défini.

VALEUR RENVOYÉE

Les fonctions strfromd(), strfromf() et strfroml() renvoient le nombre de caractères qui aurait été écrits dans str si n avait eu assez d'espace, sans compter l'octet NULL final. Ainsi, une valeur de retour de n ou plus signifie que la sortie a été tronquée.

VERSIONS

Les fonctions strfromd(), strfromf() et strfroml() sont disponibles dans la glibc depuis la version 2.25.

ATTRIBUTS

Pour une explication des termes utilisés dans cette section, consultez attributes(7) et la section POSIX Safety Concepts dans le manuel de la Bibliothèque C GNU.

Interface Attribut Valeur
strfromd(), strfromf(), strfroml() Sécurité des threads MT-Safe locale
Sécurité des signaux asynchrones AS-Unsafe heap
Sécurité des annulations asynchrones AC-Unsafe mem

Note : ces attributs sont préliminaires

CONFORMITÉ

C99, ISO/IEC TS 18661-1.

NOTES

Les fonctions strfromd(), strfromf() et strfroml() prennent en compte la catégorie LC_NUMERIC de la locale utilisée.

EXEMPLES

Pour convertir la valeur 12.1 en tant que type flottant en une chaîne utilisant la notation décimale, résultant en « 12.100000 » :


#define __STDC_WANT_IEC_60559_BFP_EXT__
#include <stdlib.h>
int ssize = 10;
char s[ssize];
strfromf(s, ssize, "%f", 12.1);


Pour convertir la valeur 12.3456 en tant que type flottant en une chaîne utilisant la notation décimale avec une précision de deux chiffres après la virgule, résultant en « 12.35 » :


#define __STDC_WANT_IEC_60559_BFP_EXT__
#include <stdlib.h>
int ssize = 10;
char s[ssize];
strfromf(s, ssize, "%.2f", 12.3456);


Pour convertir la valeur 12.345e19 en tant que type double en une chaîne utilisant la notation scientifique avec aucun chiffre après la virgule, résultant en « 1E+20 » :


#define __STDC_WANT_IEC_60559_BFP_EXT__
#include <stdlib.h>
int ssize = 10;
char s[ssize];
strfromd(s, ssize, "%.E", 12.345e19);


VOIR AUSSI

atof(3), snprintf(3), strtod(3)

COLOPHON

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

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Grégoire Scano <gregoire.scano@malloc.fr>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à <debian-l10n-french@lists.debian.org>.

6 mars 2019 GNU