strchr
, strrchr
함수로 문자열에서 문자 찾기
추천 자료: ASP.NET Core 인증 및 권한 부여
C 언어 strchr, strrchr 함수 요약 노트
strchr
함수: 문자열에서 특정 문자를 찾아 그 위치를 반환하는 함수strrchr
함수: 문자열에서 특정 문자를 역순으로 찾아 그 위치를 반환하는 함수- 함수 원형
char* strchr(const char* str, int c);
char* strrchr(const char* str, int c);
str
: 검색 대상이 되는 문자열c
: 검색하고자 하는 문자- 반환값:
str
내에서c
의 첫 번째/마지막 출현 위치를 가리키는 포인터. 검색 실패 시NULL
반환.
- 예제 코드:
str
문자열에서 'a' 문자를 검색한 후, 첫 번째/마지막 출현 위치부터 끝까지의 문자열을 출력하는 예제.
코드: strchr_strrchr_note.c
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[] = "C Language";
char* ptr = strchr(str, 'a'); // str 문자열에서 'a' 문자 검색
printf("%s\n", ptr); // ange
ptr = strrchr(str, 'a'); // str 문자열에서 'a' 문자 역순 검색
printf("%s\n", ptr); // age
return 0;
}
strchr
,strrchr
함수 활용 예시 : 문자열에서 특정 문자 찾기, 문자열 분리, 문자열 삭제 등
strchr
함수로 문자열에서 문자 찾기
string.h
헤더 파일에 선언되어 있는 "문자열에서 문자 검색(String Character)"을 의미하는 strchr
함수를 사용하면 문자열에서 특정 문자를 검색할 수 있습니다. 문자 검색은 대소문자를 구분합니다.
strchr
함수의 시그니처는 다음과 같습니다.
char *strchr(
const char *str, // 문자열 포인터
int c // 찾을 문자
);
strchr(문자열배열명, 찾을문자);
- 지정한 문자열 배열에서 특정 문자가 앞에서부터 처음 나오는 포인터를 반환하거나, 찾을 문자가 없으면
NULL
을 반환합니다. - 찾을 문자는 대소문자를 구분합니다.
- 지정한 문자열 배열에서 특정 문자가 앞에서부터 처음 나오는 포인터를 반환하거나, 찾을 문자가 없으면
strchr
함수 사용 예제를 살펴보겠습니다.
코드: strchr_demo.c
// strchr 함수로 문자열에서 문자 찾기
#include <string.h> // strchr()
#include <stdio.h>
int main(void)
{
char string[] = "C language"; // 원본 문자열
int ch = 'a'; // 찾을 문자
char* pfind; // 찾은 문자열 담을 그릇
int position = 0; // 찾은 문자의 위치
// 정방향 검색
pfind = strchr(string, ch);
if (pfind != NULL) // 찾지 못하면 NULL 반환
{
printf("%s\n", pfind); // anguage
position = (int)(pfind - string + 1); // 앞에서부터 찾은 문자의 위치 계산
printf("%d\n", position); // 4
}
return 0;
}
anguage
4
"C language"
문자열에서 'a'
는 "C la..."
처럼 앞에서부터 4
번째 위치에서 찾을 수 있습니다. 그래서 4
번째 이후로의 문자열을 모두 pfind
포인터에 담아 출력하면 "anguage"
가 출력되고 위치 번호는 4
가 출력됩니다.
만약, 찾을 문자를 "C language"
에 없는 'z'
문자를 넣으면 실행 결과 아무것도 출력되지 않습니다.
int ch = 'z'; // 찾을 문자
찾은 문자의 위치는 처음 문자열의 시작에서 찾은 위치까지의 거리를 빼기로 구하면 되는데요. 인덱스가 아닌 위치 번호를 구해야하기에 1
을 더한 값으로 계산합니다.
position = (int)(pfind - string + 1);
strrchr
함수로 문자열에서 역방향으로 문자 검색하기
strchr
함수와 동일한 사용법으로 뒤에서부터 첫 번째로 나오는 문자를 찾는 strrchr
함수도 있습니다.
코드: strrchr_demo.c
// strrchr 함수로 문자열 뒤에서부터 문자 찾기
#include <string.h> // strrchr()
#include <stdio.h>
int main(void)
{
char string[] = "C language"; // 원본 문자열
int ch = 'a'; // 찾을 문자
char* pfind; // 찾은 문자열 담을 그릇
int position = 0; // 찾은 문자의 위치
// 역방향 검색
pfind = strrchr(string, ch);
if (pfind != NULL) // 찾지 못하면 NULL 반환
{
printf("%s\n", pfind); // age
position = (int)(pfind - string + 1); // 뒤에서부터 찾은 문자의 위치 계산
printf("%d\n", position); // 8
}
return 0;
}
age
8
"C language"
에서 오른쪽에서부터 찾다보면 "......age"
위치에 있는 "age"
가 검색이 됩니다. 다만, 위치 번호는 뒤에서부터 세 번째인 3
이 아닌 앞에서부터 계산되어 8
이 됩니다.
퀴즈
strchr
함수는 어떤 함수인가요?strrchr
함수는 무엇을 검색하는 함수인가요?strchr
함수와strrchr
함수는 어떤 차이점이 있나요?strchr
함수와strrchr
함수가 실패할 경우 각각 어떤 값을 반환하나요?- 다음 코드의 실행 결과는 무엇인가요?
코드: strchr_strrchr_quiz.c
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[] = "C Language";
char* ptr1 = strchr(str, 'a');
char* ptr2 = strrchr(str, 'a');
printf("%s\n", ptr1);
printf("%s\n", ptr2);
return 0;
}
정답:
- 특정 문자를 찾아 그 위치를 반환하는 함수입니다.
- 특정 문자를 역순으로 찾아 그 위치를 반환하는 함수입니다.
strchr
함수는 문자열에서 처음 발견된 문자를 찾아 반환하지만,strrchr
함수는 문자열에서 마지막으로 발견된 문자를 찾아 반환합니다.- 실패할 경우, 두 함수 모두
NULL
을 반환합니다. ange
,age
추천 자료: .NET Blazor에 대해 알아보시겠어요? .NET Blazor 알아보기를 확인해보세요!