본문 바로가기
프로그래밍 언어/c(일반)

strtok 함수 - 문자열 자르기

by [Akashic Records] 개발의선지자 2024. 12. 17.

여러 명령이 U(S)ART 통신으로 커맨더(명령어)를 송수신시  커맨드를 알아내기 위해 특정 포맷에 맞춰 문자열 분리하여 추출 할 수 있다.  이 경우 c 표준 라이브러리를 사용 가능하다면 strtok을 이용하여 문자열 추출 할 수 있다.  

 

헤더 파일 

C언어 : <string.h>

 

함수 원형

char* strtok(char* str, char* delimiters)

매개 변수 

*str ; 분리할 문자열

delimiters : 구분 문자들을 포함하고 있는 C 형식 문자 (구분자)

 

리턴값 

문자열에서 찾은 마지막 토큰의 주소값 리턴

토큰이 더이상 없다면 NULL 리턴

 

토큰이란? 

일련의 문자열에서 구분 단위

 

직접 구현

#include <stdio.h>

char *strtok2(char *str, char *delim);

int main() {
    char arr[50] = "I LOVE YOU DI DI S";
    char *start = arr;
    char *res = NULL;

    while (*start != '\0') {
        res = strtok2(start, " ");
        printf("(%s) ", start);  // 토큰 출력
        start = res;             // 다음 토큰으로 이동
    }

    return 0;
}

char *strtok(char *str, char *delim) {
    while (*str != '\0') {
        if (*str == *delim) {
            *str = '\0';
            return str + 1;
        }
        str++;
    }
    return str;
}