728x90
반응형
C 언어에서 문자열을 다룰 때, 특정 문자나 문자열을 검색하는 기능이 필요할 때가 많습니다. 이를 위해 string.h
헤더 파일에서는 strchr
과 strstr
함수를 제공합니다. 이번 포스팅에서는 이 두 함수의 사용법과 동작 방식, 그리고 예제 코드를 살펴보겠습니다.
1. strchr
함수: 특정 문자 찾기
strchr
함수는 문자열에서 특정 문자가 처음 나타나는 위치를 찾아 반환합니다.
함수 원형
char *strchr(const char *str, int c);
매개변수
str
: 검색할 문자열c
: 찾을 문자 (정수형int
로 전달되지만 내부적으로char
로 처리됨)
반환값
c
문자가str
에서 처음 나타나는 위치의 포인터 (char *
) 반환- 문자가 없으면
NULL
반환
예제 코드
#include <stdio.h>
#include <string.h>
int main() {
const char *str = "Hello, world!";
char ch = 'o';
char *pos = strchr(str, ch);
if (pos) {
printf("문자 '%c'는 문자열에서 %ld 번째 위치에 있습니다.\n", ch, pos - str);
} else {
printf("문자 '%c'를 찾을 수 없습니다.\n", ch);
}
return 0;
}
실행 결과
문자 'o'는 문자열에서 4 번째 위치에 있습니다.
첫 번째 o
문자의 위치를 찾아 반환하는 것을 확인할 수 있습니다.
2. strstr
함수: 특정 문자열 찾기
strstr
함수는 문자열 내에서 특정 부분 문자열(서브스트링)을 찾을 때 사용됩니다.
함수 원형
char *strstr(const char *haystack, const char *needle);
매개변수
haystack
: 검색할 대상 문자열needle
: 찾을 문자열
반환값
needle
이haystack
에 존재하면 해당 위치의 포인터 (char *
) 반환- 찾을 문자열이 없으면
NULL
반환
예제 코드
#include <stdio.h>
#include <string.h>
int main() {
const char *str = "Hello, world!";
const char *sub = "world";
char *pos = strstr(str, sub);
if (pos) {
printf("문자열 \"%s\"는 \"%s\"에서 %ld 번째 위치에 있습니다.\n", sub, str, pos - str);
} else {
printf("문자열 \"%s\"를 찾을 수 없습니다.\n", sub);
}
return 0;
}
실행 결과
문자열 "world"는 "Hello, world!"에서 7 번째 위치에 있습니다.
문자열 "world"가 "Hello, world!"에서 7번째 위치(0부터 시작)에 있다는 것을 알 수 있습니다.
3. strchr
vs strstr
: 차이점
함수 | 찾는 대상 | 반환값 |
---|---|---|
strchr |
특정 문자 (char ) |
해당 문자의 포인터 |
strstr |
문자열 (char * ) |
해당 문자열의 포인터 |
즉, strchr
은 한 개의 문자 검색, strstr
은 부분 문자열을 검색하는 차이가 있습니다.
4. 실전 활용 예제: 사용자 입력 검색
사용자로부터 입력받은 문자가 특정 문자열 내에 존재하는지 확인하는 프로그램을 만들어 보겠습니다.
#include <stdio.h>
#include <string.h>
int main() {
char input[100];
char keyword[20];
printf("문자열을 입력하세요: ");
fgets(input, sizeof(input), stdin);
printf("검색할 단어를 입력하세요: ");
fgets(keyword, sizeof(keyword), stdin);
// 개행 문자 제거
input[strcspn(input, "\n")] = 0;
keyword[strcspn(keyword, "\n")] = 0;
char *found = strstr(input, keyword);
if (found) {
printf("\"%s\"가 문자열에서 발견되었습니다!\n", keyword);
} else {
printf("\"%s\"를 찾을 수 없습니다.\n", keyword);
}
return 0;
}
실행 예시
문자열을 입력하세요: This is a simple test.
검색할 단어를 입력하세요: simple
"simple"가 문자열에서 발견되었습니다!
사용자가 입력한 문자열에서 특정 단어를 검색하는 기능을 구현한 예제입니다.
5. 마무리
이번 포스팅에서는 C 언어 string.h
라이브러리에서 문자열을 검색할 때 사용하는 strchr
와 strstr
함수에 대해 알아보았습니다. strchr
은 단일 문자 검색, strstr
은 부분 문자열 검색을 담당합니다. 이를 활용하면 문자열 탐색을 효과적으로 수행할 수 있습니다.
반응형
'c 언어 > c 표준 라이브러리(Standard C Library)' 카테고리의 다른 글
C 표준 라이브러리 `string.h`의 문자열 변환 함수 `strtok`, `strdup` (0) | 2025.02.13 |
---|---|
C 언어 문자열 비교 API - strcmp와 strncmp (0) | 2025.02.11 |
C 언어 `string.h`의 `strcat`과 `strncat` 함수 이해하기 (0) | 2025.02.10 |
C 표준 라이브러리 string.h 개요 및 문자열 관련 함수 (strlen, strcpy, strncpy) (0) | 2025.02.09 |
파일 에러 처리 함수(perror, clearerr, feof, ferror) - C 언어 (0) | 2025.02.08 |