카테고리 없음
[C언어] 문자열 조작함수 - strstr()
s뽈록이s
2013. 5. 20. 09:47
void main() { char *str_1 = "xyzfind findxyz"; char *str_2 = "find"; int cnt = 0; char *p; for(;; str_1++) { if((p = strstr(str_1, str_2)) != NULL) { cnt++; str_1 = p; } else break; } printf("찾은 'find'의 갯수 : %d\n", cnt); }
프로그램 실행화면
문자열 조작함수로 strstr()이라는 녀석이 있다. 이 함수는 문자열 속에서 찾고자 하는 녀석, 즉 검색을 해서 매칭되는 문자열이 있다면 그 문자열의 위치를 반환해 주는 녀석이다.
예제를 보면 조금 더 쉽게 이해를 할 수있다. str_1에는 긴 문자열이 저장되어 있고 str_2에는 검색하고자 하는 문자열이 들어 있다. 포인터가 들어가 있기 때문에 조금 어렵게 느껴질 수도 있다.
반복문의 조건식도 없고 조금 이상해 보이지만 반복의 조건은 따로 없다. while(1)을 쓰는 것이 더 자연스럽게 보일 수도 있겠다.
strstr()의 return 값이 널이라면 검색된 문자열이 없기에 이것이 반복문을 끝내는 조건이 된다. 만약 문자열을 찾았다면 str_1++을 하여주어 같은 녀석이 검색되지 않게 하여준다.
"find~~~" 이 문자열이 "ind~~~"가 되는 것이다.