.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" References consulted: .\" Linux libc source code .\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) .\" 386BSD man pages .\" Modified Sat Jul 24 18:00:10 1993 by Rik Faith (faith@cs.unc.edu) .\" Modified Mon Jan 20 12:04:18 1997 by Andries Brouwer (aeb@cwi.nl) .\" Modified Tue Jan 23 20:23:07 2001 by Andries Brouwer (aeb@cwi.nl) .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH strsep 3 "15 июня 2024 г." "Справочные страницы Linux 6.9.1" .SH ИМЯ strsep \- извлечение токена из строки .SH БИБЛИОТЕКА Стандартная библиотека языка C (\fIlibc\fP, \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#include \fP .P \fBchar *strsep(char **restrict \fP\fIstringp\fP\fB, const char *restrict \fP\fIdelim\fP\fB);\fP .fi .P .RS -4 Требования макроса тестирования свойств для glibc (см. \fBfeature_test_macros\fP(7)): .RE .P \fBstrsep\fP(): .nf Начиная с glibc 2.19: _DEFAULT_SOURCE В версии glibc 2.19 и более ранних: _BSD_SOURCE .fi .SH ОПИСАНИЕ If \fI*stringp\fP is NULL, the \fBstrsep\fP() function returns NULL and does nothing else. Otherwise, this function finds the first token in the string \fI*stringp\fP that is delimited by one of the bytes in the string \fIdelim\fP. This token is terminated by overwriting the delimiter with a null byte (\[aq]\[rs]0\[aq]), and \fI*stringp\fP is updated to point past the token. In case no delimiter was found, the token is taken to be the entire string \fI*stringp\fP, and \fI*stringp\fP is made NULL. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" Функция \fBstrsep\fP() возвращает указатель на токен, то есть возвращает исходное значение \fI*stringp\fP. .SH АТРИБУТЫ Описание терминов данного раздела смотрите в \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Интерфейс Атрибут Значение T{ .na .nh \fBstrsep\fP() T} Безвредность в нитях MT\-Safe .TE .SH СТАНДАРТЫ None. .SH ИСТОРИЯ 4.4BSD. .P Функция \fBstrsep\fP() была введена в качестве замены функции \fBstrtok\fP(3), потому что последняя не может обрабатывать пустые поля. Тем не менее, функция \fBstrtok\fP(3) соответствует C89/C99 и поэтому более переносима. .SH ОШИБКИ Используйте данную функцию с осторожностью. Учитывайте, что: .IP \[bu] 3 Данная функция изменяет первый аргумент. .IP \[bu] Эта функция не может использоваться со строками\-константами. .IP \[bu] Теряется идентичность символа\-разделителя. .SH ПРИМЕРЫ The program below is a port of the one found in \fBstrtok\fP(3), which, however, doesn't discard multiple delimiters or empty tokens: .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 4: \-\-> .EE .in .SS "Исходный код программы" .\" SRC BEGIN (strsep.c) \& .EX #include #include #include \& int main(int argc, char *argv[]) { char *token, *subtoken; \& if (argc != 4) { fprintf(stderr, "Usage: %s string delim subdelim\[rs]n", argv[0]); exit(EXIT_FAILURE); } \& for (unsigned int j = 1; (token = strsep(&argv[1], argv[2])); j++) { printf("%u: %s\[rs]n", j, token); \& while ((subtoken = strsep(&token, argv[3]))) printf("\[rs]t \-\-> %s\[rs]n", subtoken); } \& exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "СМОТРИТЕ ТАКЖЕ" \fBmemchr\fP(3), \fBstrchr\fP(3), \fBstring\fP(3), \fBstrpbrk\fP(3), \fBstrspn\fP(3), \fBstrstr\fP(3), \fBstrtok\fP(3) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства разработал(и) Alexander Golubev , Azamat Hackimov , Hotellook, Nikita , Spiros Georgaras , Vladislav , Yuri Kozlov и Иван Павлов . .PP Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, .UR https://www.gnu.org/licenses/gpl-3.0.html .UE версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ. .PP Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу .MT списка рассылки русских переводчиков .ME .