728x90
C 언어의 strstr 함수는 문자열에서 하위 문자열을 검색하는 데 사용됩니다. 이 함수는 매우 유용하며 문자열 처리와 검색 작업에서 자주 활용됩니다. strstr 함수의 사용 방법과 동작 원리를 자세히 살펴보겠습니다.
1. 함수의 선언과 기능
strstr 함수는 <string.h> 헤더 파일에 선언되어 있습니다. 함수의 선언은 다음과 같습니다
char *strstr(const char *haystack, const char *needle);
- haystack: 검색 대상이 되는 문자열입니다.
- needle: 찾고자 하는 부분 문자열입니다.
strstr 함수는 needle 문자열이 haystack 문자열 내에서 발견되는 위치를 찾아 해당 위치의 포인터를 반환합니다. 만약 needle을 찾을 수 없으면 NULL 포인터를 반환합니다.
예제1)
#include <stdio.h>
#include <string.h>
int main() {
const char *haystack = "Hello, World! This is a simple example.";
const char *needle = "World";
char *result = strstr(haystack, needle);
if (result) {
printf("'%s' found at position %ld\n", needle, result - haystack);
} else {
printf("'%s' not found in the haystack.\n", needle);
}
return 0;
}
이 예제는 "haystack" 문자열에서 "needle" 문자열을 검색하고, 찾으면 위치를 출력합니다.
예제2)
#include <stdio.h>
#include <string.h>
int main() {
const char *haystack = "abcabcabcabc";
const char *needle = "abc";
char *result = (char *)haystack;
int count = 0;
while ((result = strstr(result, needle)) != NULL) {
printf("Found '%s' at position %ld\n", needle, result - haystack);
result += strlen(needle);
count++;
}
if (count == 0) {
printf("'%s' not found in the haystack.\n", needle);
}
return 0;
}
이 예제는 "haystack" 문자열에서 "needle" 문자열을 반복적으로 검색하고, 모든 발생 위치를 출력합니다.
예제3)
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
const char *haystack = "Hello, world! This is a Case-Insensitive Example.";
const char *needle = "case-insensitive";
char *result = (char *)haystack;
int count = 0;
while ((result = strstr(result, needle)) != NULL) {
printf("Found '%s' at position %ld\n", needle, result - haystack);
result += strlen(needle);
count++;
}
if (count == 0) {
printf("'%s' not found in the haystack.\n", needle);
}
return 0;
}
이 예제에서는 strcasestr 함수를 사용하여 대소문자 구분 없이 문자열을 검색합니다.
strstr 함수는 C 언어에서 문자열 검색에 사용되는 강력한 도구입니다.
이 함수를 이용하면 문자열에서 원하는 패턴을 찾을 수 있으며, 대소문자 구분 여부를 선택할 수 있습니다.
strstr 함수를 활용하여 다양한 문자열 처리 작업을 수행할 수 있습니다.
728x90
반응형
'언어 > C언어' 카테고리의 다른 글
[c언어] strcpy 함수 (1) | 2023.10.30 |
---|---|
[c언어] 멀티스레딩과 병렬 프로그래밍 (0) | 2023.10.28 |
[C언어] memcpy 함수 사용법 (0) | 2023.10.27 |
[c언어] 문자열을 Int형 정수로 변환하는 atoi함수 (4) | 2022.08.30 |
[c언어] 시간을 구하는 strftime 함수 (4) | 2022.08.05 |
댓글