August 12, 2006 STRSEP 3

### NAME

strsep, stresep - separate strings

### LIBRARY

Standard C Library (libc, -lc)

### SYNOPSIS

```char``*` strsep(```char **stringp``, const char *delim`)
```char``*` stresep(```char **stringp``, const char *delim``, int escape`)

### DESCRIPTION

The strsep(``) 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.

### EXAMPLES

The following uses strsep(``) 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++;
      }

  `

### HISTORY

The strsep(``) 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.