strcspn() 함수란?
C 언어의 strcspn() 함수는 두 문자열을 비교하여, 첫 번째 문자열에서 두 번째 문자열에 포함된 문자가 처음으로 일치하기 전까지의 문자 개수를 계산합니다. 즉, 첫 번째 문자열을 처음부터 훑으며 두 번째 문자열의 어떤 문자와도 일치하지 않는 초기 구간의 길이를 반환합니다.
이 함수는 C 표준 라이브러리의 “string.h” 헤더 파일에 선언되어 있으며, 반환형은 size_t입니다. 만약 일치하는 문자가 하나도 없다면 첫 번째 문자열의 전체 길이를 반환합니다.
함수 구문
size_t strcspn(const char *string1, const char *string2)
각 매개변수의 의미는 다음과 같습니다.
- string1 − 검색 대상이 되는 첫 번째 문자열입니다.
- string2 − 첫 번째 문자열에서 일치하는 문자를 찾기 위한 기준이 되는 두 번째 문자열입니다.
예제
다음은 C 언어에서 strcspn() 함수를 사용하는 예제입니다.
#include<stdio.h>
#include<string.h>
int main() {
char str1[] = "Helloworld!";
char str2[] = "work";
int result = strcspn(str1, str2);
printf("일치하는 문자 앞의 문자 개수 : %d\n", (result+1));
return 0;
}
실행 결과
일치하는 문자 앞의 문자 개수 : 5
코드 분석
위 프로그램에서는 char 타입 배열 두 개를 선언하고 각각 문자열을 저장합니다. strcspn() 함수는 str1("Helloworld!")을 처음부터 검사하면서 str2("work")에 포함된 문자가 처음 나타나는 위치를 찾습니다. 다섯 번째 문자인 'o'가 str2의 'o'와 일치하므로, 그 앞에 있는 'H', 'e', 'l', 'l' 네 개의 문자가 계산되어 result에는 4가 저장됩니다.
출력 단계에서는 result에 1을 더한 값인 5를 화면에 표시합니다. 이처럼 strcspn()은 문자열 안에서 특정 문자 집합이 처음 등장하는 위치를 파악할 때 매우 유용하며, 입력값 검증이나 토큰 분리 등 다양한 문자열 처리 작업에 활용할 수 있습니다.