Scroll to navigation

strtoul(3) Library Functions Manual strtoul(3)

NUME

strtoul, strtoull, strtouq - convertește un șir de caractere într-un întreg lung fără semn

BIBLIOTECA

Biblioteca C standard (libc, -lc)

REZUMAT

#include <stdlib.h>
unsigned long strtoul(const char *restrict nptr,
                      char **restrict endptr, int bază);
unsigned long long strtoull(const char *restrict nptr,
                      char **restrict endptr, int bază);

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

strtoull():


_ISOC99_SOURCE
|| /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE

DESCRIERE

Funcția strtoul() convertește partea inițială a șirului din nptr într-o valoare unsigned long în funcție de baza dată, care trebuie să fie cuprinsă între 2 și 36 inclusiv, sau să fie valoarea specială 0.

Șirul poate începe cu o cantitate arbitrară de spațiu alb (determinată de isspace(3)), urmată de un singur semn opțional „+” sau „-”. Dacă bază este zero sau 16, șirul poate include apoi un prefix „0x”, iar numărul va fi citit în baza 16; în caz contrar, o bază zero este considerată ca fiind 10 (zecimal), cu excepția cazului în care următorul caracter este „0”, caz în care este considerat ca fiind 8 (octal).

Restul șirului este convertit într-o valoare unsigned long în mod evident, oprindu-se la primul caracter care nu este o cifră validă în baza dată; (în bazele mai mari de 10, litera „A”, fie cu majusculă, fie cu minusculă, reprezintă 10, „B” reprezintă 11, și așa mai departe, „Z” reprezentând 35).

Dacă endptr nu este NULL, strtoul() stochează adresa primului caracter nevalid în *endptr. În cazul în care nu au existat deloc cifre, strtoul() stochează valoarea originală a nptr în *endptr (și returnează 0). În cazul special, dacă *nptr nu este „\0”, dar **endptr este „\0” la returnare, întregul șir este valid.

Funcția strtoull() funcționează la fel ca funcția strtoul(), dar returnează o valoare unsigned long long.

VALOAREA RETURNATĂ

Funcția strtoul() returnează fie rezultatul conversiei, fie, în cazul în care a existat un semn minus, negația rezultatului conversiei, reprezentat ca o valoare fără semn, cu excepția cazului în care valoarea originală (fără semn) ar fi depășită; în acest din urmă caz, strtoul() returnează ULONG_MAX și configurează errno la ERANGE. Exact același lucru este valabil și pentru strtoull() (cu ULLONG_MAX în loc de ULONG_MAX).

ERORI-IEȘIRE

(nu în C99) baza dată conține o valoare neacceptată.
Valoarea rezultată a fost în afara intervalului.

Implementarea poate, de asemenea, să stabilească errno la EINVAL în cazul în care nu a fost efectuată nicio conversie (nu se vede nicio cifră și se returnează 0).

ATRIBUTE

Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).

Interfață Atribut Valoare
strtoul(), strtoull(), strtouq() Siguranța firelor MT-Safe locale

STANDARDE

C11, POSIX.1-2008.

ISTORIC

POSIX.1-2001, C89, SVr4.
POSIX.1-2001, C99.

NOTE

Deoarece strtoul() poate returna în mod legitim 0 sau ULONG_MAX (ULLONG_MAX pentru strtoull()) 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.

În alte configurații regionale decât "C", pot fi acceptate și alte șiruri; (de exemplu, poate fi acceptat separatorul de mii din configurația regională curentă).

BSD are de asemenea


u_quad_t strtouq(const char *nptr, char **endptr, int base);

cu o definiție complet analoagă. În funcție de dimensiunea cuvintelor din arhitectura curentă, acest lucru poate fi echivalent cu strtoull() sau cu strtoul().

Valorile negative sunt considerate intrări valide și sunt convertite în mod silențios în valoarea echivalentă unsigned long.

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

a64l(3), atof(3), atoi(3), atol(3), strtod(3), strtol(3), strtoumax(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