strtok_s, _strtok_s_l, wcstok_s, _wcstok_s_l, _mbstok_s, _mbstok_s_l
다음 토큰을 현재 로캘 또는 전달 된 로캘을 사용 하 여 문자열을 찾습니다.이러한 버전의 수 strtok, _strtok_l, wcstok, _wcstok_l, _mbstok, _mbstok_l 에 설명 된 대로 보안 향상 기능을 CRT의 보안 기능.
중요 |
---|
_mbstok_s및 _mbstok_s_l Windows 런타임에서 실행 되는 응용 프로그램에서 사용할 수 없습니다.자세한 내용은 /zw에 지원 되는 CRT 함수. |
char *strtok_s(
char *strToken,
const char *strDelimit,
char **context
);
char *_strtok_s_l(
char *strToken,
const char *strDelimit,
char **context,
_locale_tlocale
);
wchar_t *wcstok_s(
wchar_t *strToken,
const wchar_t *strDelimit,
wchar_t**context
);
wchar_t *_wcstok_s_l(
wchar_t *strToken,
const wchar_t *strDelimit,
wchar_t**context,
_locale_tlocale
);
unsigned char *_mbstok_s(
unsigned char*strToken,
const unsigned char *strDelimit,
char **context
);
unsigned char *_mbstok_s(
unsigned char*strToken,
const unsigned char *strDelimit,
char **context,
_locale_tlocale
);
매개 변수
strToken
토큰 또는 토큰을 포함 하는 문자열입니다.strDelimit
구분 기호 문자 집합입니다.context
호출 간에 위치 정보를 저장 하는 데 사용strtok_slocale
사용 하는 로캘.
반환 값
다음 토큰에 대 한 포인터를 반환 strToken.반환 NULL 없음 더 많은 토큰을 발견 합니다.각 호출 수정 strToken 대체 하 여는 NULL 문자 뒤에 있는 반환 된 토큰을 발생 하는 첫 번째 구분 합니다.
오류 조건
strToken |
strDelimit |
context |
반환 값 |
errno |
---|---|---|---|---|
NULL |
any |
null 포인터에 대 한 포인터 |
NULL |
EINVAL |
any |
NULL |
any |
NULL |
EINVAL |
any |
any |
NULL |
NULL |
EINVAL |
경우 strToken 는 NULL 오류가 없습니다 하지만 컨텍스트 잘못 된 컨텍스트 포인터에 대 한 포인터입니다.
설명
strtok_s 함수에서 다음 토큰을 찾아 strToken.문자 집합이 strDelimit 에서 찾을 수 있는 토큰의 구분을 지정 strToken 에 대 한 현재 호출 합니다.wcstok_s및 _mbstok_s 와이드 및 멀티 바이트 문자 버전의 strtok_s.인수 및 반환 값을 wcstok_s 및 _wcstok_s_l 와이드 문자 문자열입니다. _mbstok_s 및 _mbstok_s_l 멀티 바이트 문자 문자열입니다.이러한 세 가지 함수 그렇지에 동일 하 게 동작 합니다.
이 함수 매개 변수의 유효성을 검사 합니다.오류 조건 테이블에서 오류가 발생 하면 잘못 된 매개 변수 처리기를의 설명에 따라 호출 됩니다 매개 변수 유효성 검사.실행을 계속 허용 되 면 이러한 함수를 설정 errno 에 EINVAL 를 반환 하 고 NULL.
일반 텍스트 루틴 매핑
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 함수 앞의 구분 기호를 생략 하 고 첫 번째 토큰에 대 한 포인터를 반환 strToken, 토큰에 null 문자를 종료 합니다.나머지 부분에서 더 많은 토큰을 나눌 수 있습니다 strToken 일련의 호출 하 여 strtok_s.각 호출에 strtok_s 수정 strToken 호출에 의해 반환 되는 토큰 뒤 null 문자를 삽입 합니다.context 읽고 문자열 및 문자열에 다음 토큰을 읽을 수 있는 포인터를 추적 합니다.로부터 다음 토큰을 읽을 수 strToken, 호출 strtok_s 에 NULL 값은 strToken 인수를 동일한 전달 context 매개 변수.NULLstrToken 인수 원인 strtok_s 에서 수정한 다음 토큰을 검색 하려면 strToken. strDelimit 인수 구분 기호 집합이 다를 수 있도록 값에서 다음 호출을 수행할 수 있습니다.
이후는 context 매개 변수 대체에 사용 되는 정적 버퍼 strtok 및 _strtok_l, 동일한 스레드에서 동시에 두 개의 문자열을 구문 분석 하는 것이 가능 합니다.
출력 값의 설정에 의해 영향을 받지는 LC_CTYPE 범주 설정 로케일입니다. 볼 setlocale 에 대 한 자세한 내용은.없이 이러한 함수 버전을 _l 접미사는 현재 로케일에 대 한이 로케일 종속 동작; 사용 버전으로는 _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);
}
}
}
해당 .NET Framework 항목
해당 사항 없음. 표준 C 함수를 호출 하려면 PInvoke. 자세한 내용은 플랫폼 호출 예제.