strtod(3) | Library Functions Manual | strtod(3) |
NUME
strtod, strtof, strtold - convertesc un șir ASCII în număr în virgulă mobilă
BIBLIOTECA
Biblioteca C standard (libc, -lc)
SINOPSIS
#include <stdlib.h>
double strtod(const char *restrict nptr, char **restrict endptr); float strtof(const char *restrict nptr, char **restrict endptr); long double strtold(const char *restrict nptr, char **restrict endptr);
strtof(), strtold():
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
DESCRIERE
Funcțiile strtod(), strtof() și strtold() convertesc porțiunea inițială a șirului indicat de nptr în reprezentarea double, float și, respectiv, long double.
Forma așteptată a șirului (porțiunii inițiale a șirului) este un spațiu alb de început opțional, astfel cum este recunoscut de isspace(3), un semn plus („+”) sau minus („-”) opțional și apoi fie (i) un număr zecimal, fie (ii) un număr hexazecimal, fie (iii) un infinit, fie (iv) un NAN (not-a-number).
Un număr zecimal constă dintr-o secvență nevidă de cifre zecimale care poate conține un caracter drept separator zecimal (semn zecimal, în funcție de configurația regională, de obicei „.”), urmat, opțional, de un exponent zecimal. Un exponent zecimal constă dintr-un „E” sau „e”, urmat de un semn plus sau minus opțional, urmat de o secvență nevidă de cifre zecimale, și indică înmulțirea cu o putere de 10.
Un număr hexazecimal este format dintr-un „0x” sau „0X” urmat de o secvență nevidă de cifre hexazecimale care poate conține un caracter drept separator, urmat, opțional, de un exponent binar. Un exponent binar constă dintr-un „P” sau „p”, urmat de un semn plus sau minus opțional, urmat de o secvență nevidă de cifre zecimale și indică înmulțirea cu o putere de 2. Trebuie să fie prezent (cel puțin unul dintre ele) fie caracterul cu rol separator, fie exponentul binar.
Un infinit este fie „INF”, fie „INFINITY”, fără a lua în considerare diferențele dintre ele.
Un NAN este „NAN” (fără a lua în considerare majusculele și minusculele) urmat, opțional, de un șir de caractere, (n-char-sequence), unde n-char-sequence specifică tipul de NAN într-un mod care depinde de implementare (a se vedea secțiunea NOTE).
VALOAREA RETURNATĂ
Aceste funcții returnează valoarea convertită, dacă există.
Dacă endptr nu este NULL, în locația la care face referire endptr se stochează un indicator la caracterul de după ultimul caracter utilizat în conversie.
Dacă nu se efectuează nicio conversie, se returnează zero și (cu excepția cazului în care endptr este nul) valoarea lui nptr este stocată în locația la care face referire endptr.
În cazul în care valoarea corectă ar provoca o depășire, se returnează plus sau minus HUGE_VAL, HUGE_VALF sau HUGE_VALL (în funcție de tipul de returnare și de semnul valorii), iar ERANGE este stocat în errno.
În cazul în care valoarea corectă ar provoca o depășire a limitei minime (ar fi sub valoarea minimă), se returnează o valoare cu magnitudinea nu mai mare decât DBL_MIN, FLT_MIN sau LDBL_MIN, iar ERANGE este stocat în errno.
ERORI-IEȘIRE
- ERANGE
- A apărut o depășire a limitei superioare/inferioare.
ATRIBUTE
Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
Interfață | Atribut | Valoare |
strtod(), strtof(), strtold() | Siguranța firelor | MT-Safe locale |
VERSIUNI
În implementarea glibc, secvența n-char-sequence care urmează opțional după „NAN” este interpretată ca un număr întreg (cu un prefix opțional „0” sau „0x” pentru a selecta baza 8 sau 16) care urmează să fie plasat în componenta mantisă a valorii returnate.
STANDARDE
C11, POSIX.1-2008.
ISTORIC
NOTE
Deoarece 0 poate fi returnat în mod legitim atât în caz de succes, cât și în caz de eșec, programul apelant ar trebui să stabilească errno la 0 înainte de apel, iar apoi să determine dacă s-a produs o eroare verificând dacă errno are o valoare diferită de zero după apel.
EXEMPLE
A se vedea exemplul de pe pagina de manual strtol(3); utilizarea funcțiilor descrise în această pagină de manual este similară.
CONSULTAȚI ȘI
atof(3), atoi(3), atol(3), nan(3), nanf(3), nanl(3), strfromd(3), strtol(3), strtoul(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.
2 mai 2024 | Pagini de manual de Linux 6.8 |