strtok_s
, _strtok_s_l
, wcstok_s
, _wcstok_s_l
, _mbstok_s
_mbstok_s_l
현재 로캘 또는 전달된 로캘을 사용하여 문자열의 다음 토큰을 찾습니다. CRT의 _strtok_l
strtok
보안 기능에 설명된 대로 이러한 버전의 < _mbstok_l
wcstok
_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_s
는 strtok_s
의 와이드 문자 및 멀티바이트 문자 버전입니다. 와이드 문자열의 wcstok_s
인수 및 _wcstok_s_l
반환 값입니다. 인수 및 반환 값 _mbstok_s
_mbstok_s_l
은 멀티바이트 문자열입니다. 그 외의 경우에는 이들 함수가 동일하게 작동합니다.
이 함수는 해당 매개 변수의 유효성을 검사합니다. 오류 조건 테이블에서와 같이 오류 조건이 발생하면 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출됩니다. 계속해서 실행하도록 허용된 경우 이러한 함수는 errno
를 EINVAL
로 설정하고 NULL
을 반환합니다.
첫 번째 strtok_s
호출에서 함수는 선행 구분 기호를 건너뛰고 str
의 첫 번째 토큰에 대한 포인터를 반환하여 null 문자로 토큰을 종료합니다. strtok_s
에 대한 일련의 호출을 통해 나머지 str
에서 더 많은 토큰을 분할할 수 있습니다. strtok_s
를 호출할 때마다 해당 호출에서 반환된 후에 null 문자를 삽입하여 str
을 수정합니다. context
포인터는 읽고 있는 문자열과 다음 토큰을 읽을 문자열 내 위치를 추적합니다. str
에서 다음 토큰을 읽으려면 str
인수에 NULL
값을 사용하여 strtok_s
를 호출하고 같은 context
매개 변수를 전달합니다. 인수 strtok_s
는 NULL
str
수정된 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