.\" -*- coding: UTF-8 -*- '\" t .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH strtok 3 "17 mai 2025" "Pagini de manual de Linux 6.15" .SH NUME strtok, strtok_r \- extrage simboluri din șiruri .SH BIBLIOTECA Biblioteca C standard (\fIlibc\fP, \fI\-lc\fP) .SH SINOPSIS .nf \fB#include \fP .P \fBchar *strtok(char *_Nullable restrict \fP\fIstr\fP\fB, const char *restrict \fP\fIdelim\fP\fB);\fP \fBchar *strtok_r(char *_Nullable restrict \fP\fIstr\fP\fB, const char *restrict \fP\fIdelim\fP\fB,\fP \fB char **restrict \fP\fIsaveptr\fP\fB);\fP .fi .P .RS -4 Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați \fBfeature_test_macros\fP(7)): .RE .P \fBstrtok_r\fP(): .nf _POSIX_C_SOURCE || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE .fi .SH DESCRIERE Funcția \fBstrtok\fP() descompune un șir de caractere într\-o secvență de zero sau mai multe simboluri nevide. La primul apel la \fBstrtok\fP(), șirul de caractere care trebuie analizat trebuie specificat în \fIstr\fP. În fiecare apel ulterior care ar trebui să analizeze același șir de caractere, \fIstr\fP trebuie să fie NULL. .P Argumentul \fIdelim\fP specifică un set de octeți care delimitează simbolurile din șirul analizat. Apelantul poate specifica șiruri diferite în \fIdelim\fP în apeluri succesive care analizează același șir. .P Fiecare apel la \fBstrtok\fP() 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, \fBstrtok\fP() returnează NULL. .P O secvență de apeluri la \fBstrtok\fP() 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 \fBstrtok\fP() 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 \fIstr\fP. 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 \fBstrtok\fP() returnează NULL. (Un șir de caractere care este gol sau care conține numai delimitatori va face astfel ca \fBstrtok\fP() să returneze NULL la primul apel). .P 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 (\[aq]\[rs]0\[aq]). Î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 \fBstrtok\fP() 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, \fBstrtok\fP() returnează un indicator la începutul simbolului găsit. .P 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 \fBstrtok\fP() sunt întotdeauna șiruri de caractere nevide. Astfel, de exemplu, având în vedere șirul „\fIaaa;;bbb,\fP”, apelurile succesive la \fBstrtok\fP() care specifică șirul delimitator „\fI;,\fP” ar returna șirurile „\fIaaa\fP” și „\fIbbb\fP”, iar apoi un indicator nul. .P Funcția \fBstrtok_r\fP() este o versiune reentrantă a \fBstrtok\fP(). Argumentul \fIsaveptr\fP este un indicator către o variabilă \fIchar\ *\fP care este utilizată intern de \fBstrtok_r\fP() pentru a menține contextul între apelurile succesive care analizează același șir de caractere. .P La primul apel la \fBstrtok_r\fP(), \fIstr\fP trebuie să indice șirul de caractere care urmează să fie analizat, iar valoarea lui \fI*saveptr\fP este ignorată (dar a se vedea secțiunea VERSIUNI). În apelurile ulterioare, \fIstr\fP ar trebui să fie NULL, iar \fIsaveptr\fP (și memoria tampon către care acesta indică) ar trebui să fie neschimbată de la apelul anterior. .P Diferite șiruri de caractere pot fi analizate concomitent folosind secvențe de apeluri la \fBstrtok_r\fP() care specifică diferite argumente \fIsaveptr\fP. .SH "VALOAREA RETURNATĂ" Funcțiile \fBstrtok\fP() și \fBstrtok_r\fP() returnează un indicator către următorul simbol, sau NULL dacă nu mai există simboluri. .SH ATRIBUTE Pentru o explicație a termenilor folosiți în această secțiune, a se vedea \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Interfață Atribut Valoare T{ .na .nh \fBstrtok\fP() T} Siguranța firelor MT\-Unsafe race:strtok T{ .na .nh \fBstrtok_r\fP() T} Siguranța firelor MT\-Safe .TE .SH VERSIUNI .\" Tru64, according to its manual page În unele implementări, \fI*saveptr\fP trebuie să fie NULL la primul apel la \fBstrtok_r\fP() care este utilizat pentru a analiza \fIstr\fP. .SH STANDARDE .TP \fBstrtok\fP() C11, POSIX.1\-2008. .TP \fBstrtok_r\fP() POSIX.1\-2008. .SH ISTORIC .TP \fBstrtok\fP() POSIX.1\-2001, C89, SVr4, 4.3BSD. .TP \fBstrtok_r\fP() POSIX.1\-2001. .SH ERORI Fiți precaut atunci când utilizați aceste funcții. Dacă le utilizați, rețineți că: .IP \[bu] 3 Aceste funcții modifică primul lor argument. .IP \[bu] Aceste funcții nu pot fi utilizate pe șiruri constante. .IP \[bu] Identitatea octetului de delimitare este pierdută. .IP \[bu] Funcția \fBstrtok\fP() utilizează o memorie tampon statică în timpul analizei, deci nu este sigură pentru fire. Utilizați \fBstrtok_r\fP() dacă acest lucru este important pentru dumneavoastră. .SH EXEMPLE Programul de mai jos folosește bucle imbricate care utilizează \fBstrtok_r\fP() pentru a împărți un șir de caractere într\-o ierarhie de simboluri pe două niveluri. Primul argument din linia de comandă specifică șirul de caractere care urmează să fie analizat. Al doilea argument specifică octetul (octeții) delimitator(i) care urmează să fie utilizați pentru a separa șirul în simboluri „majore”. Al treilea argument specifică octetul (octeții) delimitator(i) care trebuie utilizați pentru a separa simbolurile „majore” în sub\-simboluri. .P Un exemplu de ieșire produsă de acest program este următorul: .P .in +4n .EX $\fB ./a.out \[aq]a/bbb///cc;xxx:yyy:\[aq] \[aq]:;\[aq] \[aq]/\[aq]\fP 1: a/bbb///cc \-\-> a \-\-> bbb \-\-> cc 2: xxx \-\-> xxx 3: yyy \-\-> yyy .EE .in .SS "Sursa programului" .\" SRC BEGIN (strtok.c) \& .EX #include #include #include \& int main(int argc, char *argv[]) { char *str1, *str2, *token, *subtoken; char *saveptr1, *saveptr2; int j; \& if (argc != 4) { fprintf(stderr, "Utilizare: %s șir delimitator sub\-delimitator\[rs]n", argv[0]); exit(EXIT_FAILURE); } \& for (j = 1, str1 = argv[1]; ; j++, str1 = NULL) { token = strtok_r(str1, argv[2], &saveptr1); if (token == NULL) break; printf("%d: %s\[rs]n", j, simbol); \& for (str2 = token; ; str2 = NULL) { subtoken = strtok_r(str2, argv[3], &saveptr2); if (subtoken == NULL) break; printf("\[rs]t \-\-> %s\[rs]n", sub\-simbo); } } \& exit(EXIT_SUCCESS); } .EE .\" SRC END .P Un alt exemplu de program care utilizează \fBstrtok\fP() poate fi găsit în \fBgetaddrinfo_a\fP(3). .SH "CONSULTAȚI ȘI" \fBmemchr\fP(3), \fBstrchr\fP(3), \fBstring\fP(3), \fBstrpbrk\fP(3), \fBstrsep\fP(3), \fBstrspn\fP(3), \fBstrstr\fP(3), \fBwcstok\fP(3) .PP .SH TRADUCERE Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu . .PP Această traducere este documentație gratuită; citiți .UR https://www.gnu.org/licenses/gpl-3.0.html Licența publică generală GNU Versiunea 3 .UE sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE. .PP Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la .MT translation-team-ro@lists.sourceforge.net .ME .