strtok_s, _strtok_s_l, wcstok_s, _wcstok_s_l, _mbstok_s, _mbstok_s_l

현재 로캘 또는 전달된 로캘을 사용하여 문자열의 다음 토큰을 찾습니다. CRT_strtok_lstrtok보안 기능에 설명된 대로 이러한 버전의 < _mbstok_lwcstok_wcstok_l_mbstok a0/>에는 보안 기능이 향상되었습니다.

Important

Windows 런타임에서 실행되는 애플리케이션에서는 _mbstok_s_mbstok_s_l을 사용할 수는 없습니다. 자세한 내용은 유니버설 Windows 플랫폼 앱에서 지원되지 않는 CRT 함수를 참조하세요.

구문

char* strtok_s(
   char* str,
   const char* delimiters,
   char** context
);

char* _strtok_s_l(
   char* str,
   const char* delimiters,
   char** context,
   _locale_t locale
);

wchar_t* wcstok_s(
   wchar_t* str,
   const wchar_t* delimiters,
   wchar_t** context
);

wchar_t *_wcstok_s_l(
   wchar_t* str,
   const wchar_t* delimiters,
   wchar_t** context,
   _locale_t locale
);

unsigned char* _mbstok_s(
   unsigned char* str,
   const unsigned char* delimiters,
   char** context
);

unsigned char* _mbstok_s_l(
   unsigned char* str,
   const unsigned char* delimiters,
   char** context,
   _locale_t locale
);

매개 변수

str
찾을 토큰 또는 토큰이 포함된 문자열입니다.

delimiters
사용할 구분 기호 문자 집합입니다.

context
함수 호출 간에 위치 정보를 저장하는 데 사용됩니다.

locale
사용할 로캘입니다.

반환 값

str에서 발견된 다음 토큰에 대한 포인터를 반환합니다. NULL 토큰을 더 이상 찾을 수 없는 경우 반환합니다. 각 호출은 str 반환된 토큰 이후에 발생하는 첫 번째 구분 기호에 대해 null 문자를 대체하여 수정합니다.

오류 조건

str delimiters context 반환 값 errno
NULL any null 포인터에 대한 포인터 NULL EINVAL
any NULL any NULL EINVAL
any any NULL NULL EINVAL

NULL 유효한 컨텍스트 포인터에 대한 포인터인 context 경우 str 오류가 없습니다.

설명

함수 패밀리는 strtok_s 다음 토큰을 찾습니다 str. delimiters의 문자 집합은 현재 호출을 통해 str에서 찾을 토큰에 사용 가능한 구분 기호를 지정합니다. wcstok_s_mbstok_sstrtok_s의 와이드 문자 및 멀티바이트 문자 버전입니다. 와이드 문자열의 wcstok_s 인수 및 _wcstok_s_l 반환 값입니다. 인수 및 반환 값 _mbstok_s_mbstok_s_l 은 멀티바이트 문자열입니다. 그 외의 경우에는 이들 함수가 동일하게 작동합니다.

이 함수는 해당 매개 변수의 유효성을 검사합니다. 오류 조건 테이블에서와 같이 오류 조건이 발생하면 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출됩니다. 계속해서 실행하도록 허용된 경우 이러한 함수는 errnoEINVAL로 설정하고 NULL을 반환합니다.

첫 번째 strtok_s 호출에서 함수는 선행 구분 기호를 건너뛰고 str의 첫 번째 토큰에 대한 포인터를 반환하여 null 문자로 토큰을 종료합니다. strtok_s에 대한 일련의 호출을 통해 나머지 str에서 더 많은 토큰을 분할할 수 있습니다. strtok_s를 호출할 때마다 해당 호출에서 반환된 후에 null 문자를 삽입하여 str을 수정합니다. context 포인터는 읽고 있는 문자열과 다음 토큰을 읽을 문자열 내 위치를 추적합니다. str에서 다음 토큰을 읽으려면 str 인수에 NULL 값을 사용하여 strtok_s를 호출하고 같은 context 매개 변수를 전달합니다. NULLstr 인수를 사용하면 strtok_s가 수정된 str에서 다음 토큰을 검색합니다. delimiters 인수는 구분 기호 집합이 달라질 수 있도록 호출 간에 어떤 값이든 가져올 수 있습니다.

매개 변수는 context 사용된 strtok 정적 버퍼를 대체하므로 _strtok_l동일한 스레드에서 두 문자열을 동시에 구문 분석할 수 있습니다.

출력 값은 로캘의 LC_CTYPE 범주 설정 설정의 영향을 받습니다. 자세한 내용은 setlocale를 참조하세요.

접미사가 없는 _l 이러한 함수 버전은 이 로캘 종속 동작에 현재 스레드 로캘을 사용합니다. 접미사가 있는 _l 버전은 매개 변수로 지정된 locale 로캘을 대신 사용한다는 점을 제외하고 동일합니다. 자세한 내용은 Locale을 참조하세요.

기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT의 전역 상태를 참조하세요.

일반 텍스트 루틴 매핑

TCHAR.H 루틴 _UNICODE 정의 _MBCS 되지 않음 _MBCS 정의 _UNICODE 정의
_tcstok_s strtok_s _mbstok_s wcstok_s
_tcstok_s_l _strtok_s_l _mbstok_s_l _wcstok_s_l

요구 사항

루틴에서 반환된 값 필수 헤더
strtok_s <string.h>
_strtok_s_l <string.h>
wcstok_s,
_wcstok_s_l
<string.h> 또는 <wchar.h>
_mbstok_s,
_mbstok_s_l
<mbstring.h>

호환성에 대한 자세한 내용은 호환성을 참조하세요.

예시

// crt_strtok_s.c
// In this program, a loop uses strtok_s
// to print all the tokens (separated by commas
// or blanks) in two strings at the same time.

#include <string.h>
#include <stdio.h>

char string1[] =
    "A string\tof ,,tokens\nand some  more tokens";
char string2[] =
    "Another string\n\tparsed at the same time.";
char seps[]   = " ,\t\n";
char *token1 = NULL;
char *token2 = NULL;
char *next_token1 = NULL;
char *next_token2 = NULL;

int main(void)
{
    printf("Tokens:\n");

    // Establish string and get the first token:
    token1 = strtok_s(string1, seps, &next_token1);
    token2 = strtok_s(string2, seps, &next_token2);

    // While there are tokens in "string1" or "string2"
    while ((token1 != NULL) || (token2 != NULL))
    {
        // Get next token:
        if (token1 != NULL)
        {
            printf(" %s\n", token1);
            token1 = strtok_s(NULL, seps, &next_token1);
        }
        if (token2 != NULL)
        {
            printf("        %s\n", token2);
            token2 = strtok_s(NULL, seps, &next_token2);
        }
    }
}
Tokens:
A
        Another
string
        string
of
        parsed
tokens
        at
and
        the
some
        same
more
        time.
tokens

참고 항목

문자열 조작
Locale
멀티바이트 문자 시퀀스 해석
strcspn, wcscspn, _mbscspn, _mbscspn_l
strspn, wcsspn, _mbsspn, _mbsspn_l