반응형
C 함수.
strtok 함수를 이용한 문자열 검색하기 !!
strtok 함수는 문자열에서 내가 정해준 구분자를 기준으로 토큰으로 분리할 때 사용합니다.
이렇게 말로 하면 조금 이해가 어렵지만, 예제를 통해 어떤 기능을 하는지 확인해보면
바로 아~! 하고 이해가 갈겁니다.
예제 소스는 아래와 같습니다 ~ !
( 해당 예제는 문자열에서 "내일" 이라는 단어가 몇번째에 들어가 있는지를 알려주는 기능을 합니다. )
#include <stdio.h> #include <string.h> int main() { char str[100] = "나 스무살 적에 하루를 견디고 불안한 잠자리에 누울때면 내일 뭐하지 내일 뭐하지 걱정을 했지"; // 기본 문자열. char *token; // 토큰의 주소를 받을 char 포인터 변수. int count = 1; // 카운트를 기록할 변수. token = strtok(str, " "); // strtok 함수에 인자 전달 및 토큰 받아오는 부분. /* strtok 함수엔 두개의 인자값을 보내는데. 첫번째는 검색하고자 하는 문자열의 첫 주소지. 두번째는 구분자 입니다. 위와 같이 " " 이렇게 할 경우 띄어쓰기를 구분자로, 토큰화 하며 " .,_" 이런 방법으로 여러개의 구분자를 동시에 사용할 수 도 있습니다. */ while(token != NULL) { if(!strcmp(token , "내일")) // strtok 함수에서 return 해준 주소지의 값과 내가 찾고자 하는 단어 "내일"이 같은지 확인. { printf("내일은 %d번째 단어 입니다.\n", count); } token = strtok(NULL, " "); /* strtok 함수에 위와 같이 첫번째 인자값에 NULL 을 보내게 되면, 기존의 포인터(주소지)에서 그대로 검색을 진행 합니다. */ count++; } return 0; }
결과.
내일은 9번째 단어 입니다.
내일은 11번째 단어 입니다.
예제 소스만 보고 넘어 가시기 보다는,
문자열을 직접 사용자로 부터 입력받고~ 그중에 찾고자 하는 단어도 입력을 통해
찾게하는 기능을 구현하거나,
구분자를 활용해 길게 쓰여진 문단을 한 마디씩 끊어서 저장을 하거나 하는 기능을
구현해보면서 다양하게 사용해보시는걸 추천 합니다 ~
혹시 이해가 안가는 부분이 있으시다면 댓글 주세요 ~
반응형
'C/C++ > [C] 함수' 카테고리의 다른 글
[C 함수] 문자열 비교 함수. strcmp, strncmp (0) | 2015.02.26 |
---|---|
[C 함수] stat 함수를 이용한 FILE SIZE 받아오기. (0) | 2015.02.02 |
[C 함수] 정수, 실수, 문자 등을 문자열로 !! ( sprintf ) (0) | 2014.07.02 |
[C 함수] memset 함수. (0) | 2014.05.28 |