strsep(3) Library Functions Manual strsep(3)

strsep - extrage simbolul (token) dintr-un șir

Biblioteca C standard (libc, -lc)

#include <string.h>
char *strsep(char **restrict stringp, const char *restrict delim);

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

strsep():

    Începând cu glibc 2.19:
        _DEFAULT_SOURCE
    glibc 2.19 și versiunile anterioare:
        _BSD_SOURCE

Dacă *stringp este NULL, funcția strsep() returnează NULL și nu face nimic altceva. În caz contrar, această funcție găsește primul simbol din șirul *stringp care este delimitat de unul dintre octeții din șirul delim. Acest simbol este terminat prin suprascrierea delimitatorului cu un octet nul ('\0'), iar *stringp este actualizat pentru a indica trecutul simbolului. În cazul în care nu s-a găsit niciun delimitator, se consideră că simbolul este întregul șir *stringp, iar *stringp devine NULL.

Funcția strsep() returnează un indicator la simbol, adică returnează valoarea originală a *stringp.

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

Interfață Atribut Valoare
strsep() Siguranța firelor MT-Safe

4.4BSD.

Funcția strsep() a fost introdusă ca înlocuitor pentru strtok(3), deoarece aceasta din urmă nu poate gestiona câmpuri goale. Cu toate acestea, strtok(3) este conformă cu C99 și, prin urmare, este mai portabilă.

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

Această funcție modifică primul său argument.
Această funcție nu poate fi utilizată pentru șiruri constante.
Se pierde identitatea caracterului de delimitare.

Programul de mai jos este o adaptare a celui găsit în strtok(3), care, totuși, nu elimină delimitatorii multipli sau simbolurile goale:


$ ./a.out 'a/bbb///cc;xxx:yyy:' ':;' '/'
1: a/bbb///cc
         --> a
         --> bbb
         -->
         -->
         --> cc
2: xxx
         --> xxx
3: yyy
         --> yyy
4:
         -->

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int
main(int argc, char *argv[])
{
    char *token, *subtoken;
    if (argc != 4) {
        fprintf(stderr, "Utilizare: %s [șir] [delimitator] [subdelimitator]\n", argv[0]);
        exit(EXIT_FAILURE);
    }
    for (unsigned int j = 1; (token = strsep(&argv[1], argv[2])); j++) {
        printf("%u: %s\n", j, token);
        while ((subtoken = strsep(&token, argv[3])))
            printf("\t --> %s\n", subtoken);
    }
    exit(EXIT_SUCCESS);
}

memchr(3), strchr(3), string(3), strpbrk(3), strspn(3), strstr(3), strtok(3)

Traducerea în limba română a acestui manual a fost creată 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.

5 februarie 2023 Pagini de manual de Linux 6.03