STRSEP(3)

명칭
strsep - 캐릭터 라인의 분할

프로그램 라이브러리
libc

서식
<string.h> char * strsep(char **stringp, const char *delim)

해설
strsep() 함수는, *stringp 에 의해 참조되는 캐릭터 라인 중(안)에서, 캐릭터 라인 delim 안의 몇개의 캐릭터 (또는 종단의 ‘\0’ )중에서 최초로 출현하는 캐릭터의 위치를을 찾아, 그 개소를 ‘\0’ 그리고 옮겨놓습니다. 단락 캐릭터 (또는 캐릭터 라인의 말미에 이르렀을 경우는 NULL )의 다음의 캐릭터의 위치는, *stringp 에 격납됩니다. *stringp 의 원래의 값은 반환값이 됩니다.

「하늘」의 필드, 즉, 2 개의 인접하는 단락 캐릭터에 의해 생긴 필드는, *stringp 의 안에 돌려주어진 포인터가 참조하는 위치를 ‘\0’ (와)과 비교하는 것으로 검출 가능합니다.

*stringp 하지만 최초부터 NULL 인 경우는, strsep() 하 NULL (을)를 돌려줍니다.

예
이하에서는, 공백 캐릭터에 의해 단락지어진 토큰으로 구성되어 있는 캐릭터 라인을, 인수 벡터로 해석하기 위해서 strsep() (을)를 사용하고 있습니다.

    char **ap, *argv[10], *inputstring;
    for (ap = argv; (*ap = strsep(&inputstring, " \t")) ! = NULL;)
            if (**ap ! = '\0')
                    if (++ap >= &argv[10])
                            break;

참조
memchr(3), strchr(3), strcspn(3), strpbrk(3), strrchr(3), strspn(3), strstr(3), strtok(3)

역사
strsep() 함수는, strtok() 함수를 옮겨놓는 것으로서 생각되고 있습니다. strtok() 함수는 이식성의 점에서는 바람직합니다만 ( isoC 에 적합하고 있습니다) , 하늘의 필드를 취급한다, 즉, 2 개의 인접하는 단락 캐릭터에 의해 단락지어진 필드를 검출한다든가, 1회로 복수의 캐릭터 라인에 대해서 사용한다, 라고 했던 것(적)이 없습니다. strsep() 함수는, 4.4BSD 그리고 처음으로 등장했습니다.