Coding & Programming/C, C++

[C/C++] 특정 문자를 구분자로 하여 문자열 자르기(split a string with delimiter : strtok function e

mainCodes 2021. 2. 28. 08:45

[C/C++] 특정 문자를 구분자로 하여 문자열 자르기(split a string with delimiter : strtok function example) 

안녕하세요 JollyTree입니다. 
C언어로 코딩을 하다보면 문자열 복사 부터 다양한 형태의 문자열을 다루게 됩니다. 대표적인 것이 "num1;num2;num3;num4;num5;" 형태의 문자열에서 세미콜론(';')를 제외한 num1, num2, num3, num4, num5의 문자열만을 자르고자 할 경우 strtok()함수를 사용하면 쉽게 문자열을 자를 수 있습니다. 아래 예제는 for()문과 while()문을 이용하여 문자열을 자르는 방법을 보여줍니다.


예제(Example)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
 
int main()
{
    char buf[256= "num1;num2;num3;num4;num5;";
    char* num = NULL;

    //for문을 이용한 예제
    for (num = strtok(buf, ";"); num!=NULL; num = strtok(NULL";") )
        printf("%s\n", num);
 
     //while문을 이용한 예제
    strcpy(buf, "num6;num7;num8;num9;num10;");
    num = strtok(buf, ";");
    while (num != NULL)
    {
        printf("%s\n", num);
        num = strtok(NULL";");
    }
 
    return 0;
}
 

실행결과