strtok, _strtok_l, wcstok, _wcstok_l, _mbstok, _mbstok_l
현재 로캘 또는 전달 지정 된 로케일을 사용 하 여 문자열에서 다음 토큰을 찾습니다.보다 안전한 버전의이 함수를 사용할 수 있습니다. see strtok_s, _strtok_s_l, wcstok_s, _wcstok_s_l, _mbstok_s, _mbstok_s_l.
중요 |
---|
_mbstok및 _mbstok_l Windows 런타임에서 실행 되는 응용 프로그램에서 사용할 수 없습니다.자세한 내용은 /zw에 지원 되는 CRT 함수. |
char *strtok(
char *strToken,
const char *strDelimit
);
wchar_t *wcstok(
wchar_t *strToken,
const wchar_t *strDelimit
);
unsigned char *_mbstok(
unsigned char*strToken,
const unsigned char *strDelimit
);
unsigned char *_mbstok(
unsigned char*strToken,
const unsigned char *strDelimit,
_locale_t locale
);
매개 변수
strToken
토큰 또는 토큰을 포함 하는 문자열입니다.strDelimit
구분 기호 문자 집합입니다.locale
사용 하는 로캘.
반환 값
다음 토큰에 대 한 포인터를 반환 strToken.반환 NULL 없음 더 많은 토큰을 발견 합니다.각 호출 수정 strToken 대체 하 여는 NULL 문자 뒤에 있는 반환 된 토큰을 발생 하는 첫 번째 구분 합니다.
설명
strtok 함수에서 다음 토큰을 찾아 strToken.문자 집합이 strDelimit 에서 찾을 수 있는 토큰의 구분을 지정 strToken 에 대 한 현재 호출 합니다.wcstok및 _mbstok 와이드 및 멀티 바이트 문자 버전의 strtok.인수 및 반환 값을 wcstok 와이드 문자 문자열입니다. _mbstok 멀티 바이트 문자 문자열입니다.이러한 세 가지 함수 그렇지에 동일 하 게 동작 합니다.
보안 정보 |
---|
이러한 함수는 버퍼 오버런 문제를 가져온에 대 한 잠재적인 위협을 발생 합니다.버퍼 오버런 문제는 자주 방법 시스템 공격에 불필요 한 권한 상승의 결과입니다.자세한 내용은 버퍼 오버런 방지. |
첫 번째 호출에서 strtok, 함수 앞의 구분 기호를 생략 하 고 첫 번째 토큰에 대 한 포인터를 반환 strToken, 토큰에 null 문자를 종료 합니다.나머지 부분에서 더 많은 토큰을 나눌 수 있습니다 strToken 일련의 호출 하 여 strtok.각 호출에 strtok 수정 strToken null 문자 뒤에 삽입 하 여는 token 호출에 의해 반환 합니다.다음 토큰에서 읽을 수 strToken, 호출 strtok 에 NULL 값은 strToken 인수.NULLstrToken 인수 원인 strtok 에서 수정한 다음 토큰을 검색 하려면 strToken. strDelimit 인수 구분 기호 집합이 다를 수 있도록 값에서 다음 호출을 수행할 수 있습니다.
출력 값의 설정에 의해 영향을 받지는 LC_CTYPE 범주 설정 로케일입니다. 볼 setlocale 에 대 한 자세한 내용은.없이 이러한 함수 버전을 _l 접미사는 현재 로케일에 대 한이 로케일 종속 동작; 사용 버전으로는 _l 접미사는 대신 전달 로캘 매개 변수를 사용 하는 경우를 제외 하 고 동일 합니다.자세한 내용은 로캘을 참조하십시오.
[!참고]
각 함수는 문자열을 토큰으로 구문 분석 하기 위한 정적 스레드 로컬 변수를 사용 합니다.따라서 여러 스레드가 동시에 바람직하지 않은 효과 없이 이러한 함수 호출할 수 있습니다.그러나 단일 스레드 내에서 인터리빙 이러한 함수 중 하나를 호출 데이터가 손상 되 고 정확 하지 않은 결과가 발생할 가능성이 있습니다.다른 문자열을 구문 분석할 때 다음 구문 분석을 시작 하기 전에 하나의 문자열 구문 분석을 완료 합니다.또한 다른 함수가 호출 되는 위치는 루프 내에서 이러한 함수 중 하나를 호출할 때 잠재적인 위험에 대해 주의 해야 합니다.다른 함수 끝나는 이러한 함수 중 하나를 사용 하는 경우 호출 순서는 인터리브 트리거 데이터 손상이 발생 합니다.
일반 텍스트 루틴 매핑
TCHAR입니다.H 루틴 |
_UNICODE 및 _Mbcs가 정의 되어 있지 않습니다 |
_Mbcs가 정의 |
_Unicode가 정의 |
---|---|---|---|
_tcstok |
strtok |
_mbstok |
wcstok |
_tcstok |
_strtok_l |
_mbstok_l |
_wcstok_l |
요구 사항
루틴 |
필수 헤더 |
---|---|
strtok |
<string.h> |
wcstok |
<string.h> 또는 <wchar.h> |
_mbstok, _mbstok_l |
<mbstring.h> |
추가 호환성 정보를 참조 하십시오. 호환성 소개에서 합니다.
예제
// crt_strtok.c
// compile with: /W3
// In this program, a loop uses strtok
// to print all the tokens (separated by commas
// or blanks) in the string named "string".
//
#include <string.h>
#include <stdio.h>
char string[] = "A string\tof ,,tokens\nand some more tokens";
char seps[] = " ,\t\n";
char *token;
int main( void )
{
printf( "Tokens:\n" );
// Establish string and get the first token:
token = strtok( string, seps ); // C4996
// Note: strtok is deprecated; consider using strtok_s instead
while( token != NULL )
{
// While there are tokens in "string"
printf( " %s\n", token );
// Get next token:
token = strtok( NULL, seps ); // C4996
}
}
해당 .NET Framework 항목
해당 사항 없음. 표준 C 함수를 호출 하려면 PInvoke. 자세한 내용은 플랫폼 호출 예제.