본문 바로가기
C/C Library

strtok

by memora 2024. 7. 13.

Index로 돌아가기

 

 【기  능】 문자열을 구분자로 분리해 주는 기능
 
 【소  속】 string.h 
   #include <string.h>
 
 【서  식】  
   char *strtok(char *tar, const char *src);
 
 【설  명】  
   tar의 문자열을 문자열 src에 있는 문자를 구분자로 해서 분리한다(토큰).
   다음의 순서로 토큰을 분리해 낸다. 
   1) 첫번째 함수콜에서, 분리대상 tar문자열과 분리자가 포함되 src문자열을 지정.
      분리 가능한 토큰이 있으면 첫번째 토큰의 어드레스를 돌려준다.
   2) 두번째 함수콜부터는 src에 NULL을 지정한다. 분리 가능한 토큰이 있으면
      토큰의 어드레스를 돌려준다.
   3) 더이상 분라 가능한 토큰이 없으면, 리턴값으로 NULL을 돌려준다.
   4) 토큰이 분리될때마다 문자열 tar의 구분자는 공백문자('\0")로 변경된다.
 
 【인  수】  
   tar : 분리대상 문자열의 선두 어드레스
   src : 구분자 문자열의 선두 어드레스. 복수의 구분자를 지정가능
          '?' , '/', '!' -> "?/!" 
 
 【리턴 값】
  토큰이 있을 경우 : 토큰의 어드레스
  토큰이 없을 경우 : NULL
 
 【사용 예】
#include <stdio.h>
#include <string.h>
#include <stdint.h>

int main()
{
    char tar[] = "ABCD EFG,1234/abcdefg.1234";
    char src[] = " ,/.";
    char *pRetn;

    printf("tar문자열 = %s\n", tar);
    printf("src문자열 = %s\n\n", src);

    pRetn = strtok(tar, src);
    printf("%s 문자열에서 분리된 토큰 = %s\n", tar, pRetn);

    while ( pRetn != NULL ) {
        pRetn = strtok( NULL, src );
        if ( pRetn != NULL ){
            printf("%s 문자열에서 분리된 토큰 = %s\n", tar, pRetn);
        }
    }

    return 0;
}

  【결   과】
tar문자열 = ABCD EFG,1234/abcdefg.1234
src문자열 =  ,/.

ABCD 문자열에서 분리된 토큰 = ABCD
ABCD 문자열에서 분리된 토큰 = EFG
ABCD 문자열에서 분리된 토큰 = 1234
ABCD 문자열에서 분리된 토큰 = abcdefg
ABCD 문자열에서 분리된 토큰 = 1234

Index로 돌아가기

반응형

'C > C Library' 카테고리의 다른 글

strstr  (0) 2024.07.14
C Lib Index  (0) 2024.07.13
strncat  (2) 2024.07.12
strchr  (0) 2024.07.10
strcspn  (1) 2024.07.08