strsep(3)

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

BIBLIOTECA
Biblioteca C standard (libc, -lc)

REZUMAT
#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

DESCRIERE
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.

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

ATRIBUTE
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

STANDARDE
4.4BSD.

NOTE
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ă.

ERORI
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.

EXEMPLE
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:
             -->

  Sursa programului
    #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);
    }

CONSULTAȚI ȘI
memchr(3), strchr(3), string(3), strpbrk(3), strspn(3), strstr(3), strtok(3)

TRADUCERE
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 (https://www.gnu.org/licenses/gpl-3.0.html) 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.