char
*
strsep(
char **stringp
, const char *delim
)
char
*
stresep(
char **stringp
, const char *delim
, int escape
)
)
function locates, in the nul-terminated string referenced by
*stringp
,
the first occurrence of any character in the string
delim
(or the terminating
`\0'
character) and replaces it with a
`\0'.
The location of the next character after the delimiter character
(or
NULL
,
if the end of the string was reached) is stored in
*stringp
.
The original value of
*stringp
is returned.
An
``empty''
field, i.e., one caused by two adjacent delimiter characters,
can be detected by comparing the location referenced by the pointer returned
by
strsep()
to
`\0'.
If
*stringp
is initially
NULL
,
strsep()
returns
NULL
.
The
stresep()
function also takes an escape character that allows quoting the delimiter
character so that it can be part of the source string.
)
to parse a string, containing tokens delimited by white space, into an
argument vector:
char **ap, *argv[10], *inputstring;
for (ap = argv; ap < &argv[9] &&
(*ap = strsep(&inputstring, " \t")) != NULL;) {
if (**ap != '\0')
ap++;
}
)
function
is intended as a replacement for the
strtok(
)
function.
While the
strtok(
)
function should be preferred for portability reasons (it conforms to
ANSI X3.159-1989 (``ANSI C89'') )
it is unable to handle empty fields, i.e., detect fields delimited by
two adjacent delimiter characters, or to be used for more than a single
string at a time.
The
strsep(
)
function first appeared in
4.4BSD.