76 – 문자열 검색 함수

검색은 사실 여러 곳에서 많이 쓰인다. 데이터베이스에서 쿼리문을 이용해 필요한 데이터를 찾는 것과 같이, 표준 라이브러리에서는 문자열의 특정 문자 혹은 특정 문자열을 검색할 수 있는 함수들을 제공한다. strchr, strrchr, strstr, strspn, strpbrk이 문자열 검색 함수이다. 함수에 대한 정리를 우선 한번 하고 나서 몇몇 함수의 예시를 확인하겠다.

  • 함수이름 | 기능
  • strchr | 문자열에서 임의의 문자가 처음으로 발견된 위치를 검색한다.
  • strrchr | 문자열에서 임의의 문자가 마지막으로 발견된 위치를 검색한다.
  • strstr | 문자열에서 임의의 문자열을 검색한다.
  • strspn | 문자열에서 특정 문자들로 이루어진 초기 문자열의 길이를 검색한다.
  • strcspn | 문자열에서 특정 문자들이 아닌 문자들로 이루어진 초기 문자열의 길이를 검색한다.
  • strpbrk | 문자열에서 특정 문자들 중 일치하는 첫 분째 문자를 검색한다.

이렇게만 적으면 딱 와닿지는 않는다. 그래서 예시를 하나 하나 확인해보겠다.

알파벳 문자열에서 K가 처음으로 나오는 위치를 찾는 예시이다.

20170422_235256

해당되는 포인터 ptr이 K를 찾아서 K를 가리키고 있는 상태인 것이다. 그래서 K부터의 문자열이 출력된 것이다.

strrchr의 예제로는 문자열 A가 마지막으로 발견되는 위치를 검색해서 마지막 A의 위치를 포인터로 가지고 있는 것을 만들었다. 그 예제가 아래의 것이다.

다음 예제는 “Linux” 문자열을 찾는 프로그램이다. strstr 함수는 두 군데 있으면 처음 발견되는 위치에 대한 포인터를 반환하는데, 이 예시가 그것을 잘 보여줄 것이다.

다음으로 strspn의 예제를 살펴볼 것이다. 앞에 문자열에서 뒤에 문자들로 이루어진 곳을 찾는데, 이게 조금 헷갈릴 수 있다.

“seoulKorea” 문자열에서 문자 집합 “elmnopsu”의 문자로만 이루어진 문자열을 찾는데, 여기서 s 뿐만 아니라 e,o,u,l도 문자 집합에 속한다. 그러나 K는 문자 집합에 있지 않다. 즉, 찾고자 하는 문자열이 seoul이 된다. 그리고 나서 두번째로 나오는 것은 e인데 첫 번째에 나온 문자열에 대해서만 처리를 한다. 그래서 seoul 문자열의 길이인 5가 반환되어 나온 것이다.

마지막으로 strpbrk 함수를 보겠다. 문자열에서 문자 집합의 문자 중 일치하는 첫 번째 문자를 찾아서 그 포인터를 반환한다.

K가 첫 번째로 일치하기 때문에 K를 가리키는 문자열 포인터가 되어 Korea가 반환된 것이다.

문자열 검색의 경우에는 함수가 좀 어려우면 구글에서 예제를 좀 더 찾아서 보는 것을 권장한다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.