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);
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ă:
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 |