Scroll to navigation

strfromd(3) Library Functions Manual strfromd(3)

NUME

strfromd, strfromf, strfroml - convertește o valoare în virgulă mobilă într-un șir de caractere

BIBLIOTECA

Biblioteca C standard (libc, -lc)

REZUMAT

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

Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați feature_test_macros(7)):

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


__STDC_WANT_IEC_60559_BFP_EXT__

DESCRIERE

Aceste funcții convertesc o valoare în virgulă mobilă, fp, într-un șir de caractere, str, cu un șir format configurabil. Cel mult n caractere sunt stocate în str.

Octetul de terminare nul ("\0") este scris dacă și numai dacă n este suficient de mare, altfel șirul scris este trunchiat la n caractere.

Funcțiile strfromd(), strfromf() și strfroml() sunt echivalente cu


snprintf(str, n, format, fp);

cu excepția șirului format.

Formatul șirului de format

Șirul format trebuie să înceapă cu caracterul „%”. Acesta este urmat de o precizie opțională care începe cu caracterul punct (.), urmat de un număr întreg zecimal opțional. În cazul în care nu se specifică niciun număr întreg după caracterul punct, se utilizează o precizie de zero. În cele din urmă, șirul de format trebuie să aibă unul dintre specificatorii de conversie a, A, e, E, f, F, F, g sau G.

Specificatorul de conversie se aplică în funcție de tipul de virgulă mobilă indicat de sufixul funcției. Prin urmare, spre deosebire de snprintf(), șirul de format nu are un caracter modificator de lungime. A se vedea snprintf(3) pentru o descriere detaliată a acestor specificatori de conversie.

Implementarea este conformă cu standardul C99 privind conversia valorilor NaN și infinit:

Dacă fp este un NaN, +NaN sau -NaN și f (sau a, e, g) este specificatorul de conversie, conversia este în „nan” ; „nan”, sau respectiv „-nan”. Dacă F (sau A, E, G) este specificatorul de conversie, conversia este la „NAN” sau „-NAN”.

În mod similar, dacă fp este infinit, acesta este convertit în [-]inf sau [-]INF.

Un șir format incorect are ca rezultat un comportament nedefinit.

VALOAREA RETURNATĂ

Funcțiile strfromd(), strfromf() și strfroml() returnează numărul de caractere care ar fi fost scrise în str dacă n ar fi avut suficient spațiu, fără a lua în considerare octetul nul de terminare. Astfel, o valoare de returnare de n sau mai mare înseamnă că ieșirea a fost trunchiată.

ATRIBUTE

Pentru o explicație a termenilor utilizați în această secțiune, consultați attributes(7) și secțiunea POSIX Safety Concepts din manualul GNU C Library.

Interfață Atribut Valoare
strfromd(), strfromf(), strfroml() Siguranța firelor MT-Safe locale
Async-signal safety AS-Unsafe heap
Async-cancel safety AC-Unsafe mem

Notă: aceste atribute au caracter preliminar.

STANDARDE

ISO/IEC TS 18661-1.

VERSIUNI

glibc 2.25.

NOTE

Aceste funcții țin cont de categoria LC_NUMERIC a configurației regionale curente.

EXEMPLE

Pentru a converti valoarea 12.1 ca tip în virgulă mobilă, într-un șir folosind notația zecimală, rezultând „12.100000”:


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

Pentru a converti valoarea 12,3456 ca tip în virgulă mobilă, într-un șir folosind notația zecimală cu două cifre de precizie, rezultând „12,35”:


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

Pentru a converti valoarea 12.345e19 ca tip de dublă precizie într-un șir folosind notația științifică cu zero cifre de precizie, rezultând „1E+20”:


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

CONSULTAȚI ȘI

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

TRADUCERE

Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.

20 iulie 2023 Pagini de manual de Linux 6.05.01