Scroll to navigation

strtok(3) Library Functions Manual strtok(3)

NUME

strtok - extrage simboluri din șiruri

BIBLIOTECA

Biblioteca C standard (libc, -lc)

SINOPSIS

#include <string.h>
char *strtok(char *_Nullable restrict str, const char *restrict delim);

DESCRIERE

Funcția strtok() descompune un șir de caractere într-o secvență de zero sau mai multe simboluri nevide. La primul apel la strtok(), șirul de caractere care trebuie analizat trebuie specificat în str. În fiecare apel ulterior care ar trebui să analizeze același șir de caractere, str trebuie să fie NULL.

Argumentul delim specifică un set de octeți care delimitează simbolurile din șirul analizat. Apelantul poate specifica șiruri diferite în delim în apeluri succesive care analizează același șir.

Fiecare apel la strtok() returnează un indicator către un șir cu terminație nulă care conține următorul simbol. Acest șir nu include octetul de delimitare. Dacă nu se mai găsesc alte simboluri, strtok() returnează NULL.

O secvență de apeluri la strtok() care operează asupra aceluiași șir de caractere menține un indicator care determină punctul de la care începe căutarea următorului simbol. Primul apel la strtok() stabilește acest indicator la primul octet al șirului de caractere. Începutul următorului simbol este determinat prin scanarea înainte pentru următorul octet nedelimitator din str. Dacă se găsește un astfel de octet, acesta este considerat ca fiind începutul următorului simbol. Dacă nu se găsește un astfel de octet, atunci nu mai există alte simboluri, iar strtok() returnează NULL. (Un șir de caractere care este gol sau care conține numai delimitatori va face astfel ca strtok() să returneze NULL la primul apel).

Sfârșitul fiecărui simbol este găsit prin scanarea înainte până când este găsit fie următorul octet de delimitare, fie octetul nul de terminare ('\0'). În cazul în care se găsește un octet de delimitare, acesta este suprascris cu un octet nul pentru a încheia simbolul curent, iar strtok() salvează un indicator la următorul octet; acest indicator va fi utilizat ca punct de plecare la căutarea următorului simbol. În acest caz, strtok() returnează un indicator la începutul simbolului găsit.

Din descrierea de mai sus, rezultă că o secvență de doi sau mai mulți octeți delimitatori contigui în șirul analizat este considerată a fi un singur delimitator și că octeții delimitatori de la începutul sau sfârșitul șirului sunt ignorați. Altfel spus: simbolurile returnate de strtok() sunt întotdeauna șiruri de caractere nevide. Astfel, de exemplu, având în vedere șirul „aaa;;bbb,”, apelurile succesive la strtok() care specifică șirul delimitator „;,” ar returna șirurile „aaa” și „bbb”, iar apoi un indicator nul.

VALOAREA RETURNATĂ

Funcția strtok() returnează un indicator către următorul simbol, sau NULL dacă nu mai există simboluri.

ATRIBUTE

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

Interfață Atribut Valoare
strtok() Siguranța firelor MT-Unsafe race:strtok

STANDARDE

C11, POSIX.1-2008.

ISTORIC

POSIX.1-2001, C89, SVr4, 4.3BSD.

AVERTISMENTE

Fiți prudent atunci când utilizați această funcție. Dacă o utilizați, rețineți că:

Identitatea octetului de delimitare este pierdută.
Funcția strtok() utilizează o memorie tampon statică în timpul analizei, deci nu este sigură pentru fire. Utilizați strtok_r(3) dacă acest lucru este important pentru dumneavoastră.

EXEMPLE

A se vedea getaddrinfo_a(3).

CONSULTAȚI ȘI

memchr(3), strchr(3), string(3), strpbrk(3), strsep(3), strspn(3), strstr(3), strtok_r(3), wcstok(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.

25 februarie 2026 Pagini de manual de Linux 6.18