다음을 통해 공유


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. 자세한 내용은 플랫폼 호출 예제.

참고 항목

참조

문자열 조작 (CRT)

로캘

멀티 바이트 문자 시퀀스로 해석

strcspn, wcscspn, _mbscspn, _mbscspn_l

strspn, wcsspn, _mbsspn, _mbsspn_l