C 언어의 strpbrk() 함수는 첫 번째 문자열을 처음부터 순서대로 검사하면서, 두 번째 문자열에 포함된 문자 중 하나라도 일치하는 첫 번째 문자를 찾아내는 함수입니다.
검색 결과에 따라 반환값이 달라집니다.
- 일치하는 문자가 있는 경우: 첫 번째 문자열에서 일치한 문자의 위치(포인터)를 반환합니다.
- 일치하는 문자가 없는 경우: NULL을 반환합니다.
함수 구문
strpbrk() 함수의 기본 구문은 다음과 같습니다. 이 함수는 <string.h> 헤더 파일에 선언되어 있습니다.
char *strpbrk(const char *string1, const char *string2)
매개변수 설명
- string1: 검색 대상이 되는 원본 문자열입니다.
- string2: 찾고자 하는 문자들의 집합(검색 키워드)입니다.
예제 코드
다음은 strpbrk() 함수를 활용한 간단한 예제입니다.
#include <stdio.h>
#include <string.h>
int main () {
const char s1[] = "Helloworld";
const char s2[] = "Blank";
char *result;
result = strpbrk(s1, s2);
printf("The matching character : %c\n", *result);
return(0);
}
실행 결과
The matching character : l
동작 원리 분석
위 예제에서 문자열 s1은 "Helloworld", s2는 "Blank"입니다. strpbrk() 함수는 "Helloworld"를 왼쪽부터 차례대로 검사하며, "Blank"를 구성하는 문자(B, l, a, n, k)와 일치하는 첫 번째 문자를 찾습니다.
- 'H' → "Blank"에 없음
- 'e' → "Blank"에 없음
- 'l' → "Blank"에 존재!
따라서 세 번째 문자인 'l'에서 일치가 발생하며, 해당 문자의 포인터가 반환됩니다. 역참조(*result)를 통해 'l'이 출력되는 것입니다.
정리
strpbrk() 함수는 특정 문자 집합이 문자열 내 어디에서 처음 등장하는지 확인할 때 유용하게 사용됩니다. 예를 들어 입력값 유효성 검사나 구분자(delimiter) 탐색 등의 용도로 활용할 수 있으며, 일치 여부만 판단하려면 반환값이 NULL인지 확인하면 됩니다.