오리는 오늘도 꽥꽥

 

     

strtok

strtok는 문자열을 특정 문자를 기준으로 자르는 함수다.(split string into tokens)

 

  • 형식 : char * strtok ( char * str, const char * delimiters );

https://www.cplusplus.com/reference/cstring/strtok/?kw=strtok 

 

strtok - C++ Reference

Splitting string "- This, a sample string." into tokens: This a sample string

www.cplusplus.com

#include <stdio.h>
#include <string.h>

int main(){

    char string[100] = "abc def ghi";
    char * tmp;
    tmp = strtok(string, " ");
    printf("tmp : %s\n",tmp);    
    return 0;
}

/* 
출력
tmp : abc
*/

출력값을 보면 알 수 있듯이 구분자를 기준으로 쪼갰을 때, 전자의 문자열을 반환한다.

후자의 문자열은 내부적으로 저장해놓는데

여기서 str에 NULL값을 입력해 다시 실행하게 되면 후자의 문자열을 불러와 함수를 실행한다.

 

다음과 같이 반복문을 사용하면

#include <stdio.h>
#include <string.h>

int main(){

    char string[100] = "abc def ghi";
    char * tmp;
    tmp = strtok(string, " ");

    while(tmp != NULL)
    {
        printf("tmp : %s\n",tmp);
        tmp = strtok(NULL, " ");
    }
    return 0;
}

/* 
출력
tmp : abc
tmp : def
tmp : ghi
*/

문자열이 나오지 않을 때 까지  반복하게 된다.

 

strpbrk

 strpbrk는 문자열을 특정 문자를 기준으로 자르는 함수다.

 

strtok은 잘랐을 때, 전자의 문자열을 반환하는 반면에

strpbrk는 후자의 문자열을 반환한다는 차이점이 있다.

 

  • 형식 : const char * strpbrk ( const char * str1, const char * str2 );

https://www.cplusplus.com/reference/cstring/strpbrk/?kw=strpbrk 

 

strpbrk - C++ Reference

function <cstring> strpbrk const char * strpbrk ( const char * str1, const char * str2 ); char * strpbrk ( char * str1, const char * str2 ); Locate characters in string Returns a pointer to the first occurrence in str1 of any of the characters that are par

www.cplusplus.com

 

마찬가지로 반복문을 사용하면 문자열이 나오지 않을 때까지 반복한다.

#include <stdio.h>
#include <string.h>

int main()
{
    char string[100] = "abc def ghi";
    char * tmp;

    tmp = strpbrk(string, " ");
    
    while(tmp != NULL){
        printf("%s\n", tmp++);

        tmp = strpbrk(tmp, " ");
    }

    return 0;
}

/*
출력
def ghi
ghi
*/

 

 

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band