[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; } |
실행결과
![](https://blog.kakaocdn.net/dn/dMmYmI/btqYQxkGS9U/oSLWLtUjyrmvR8UOtoGXI0/img.png)