Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 대구동성로맛집
- 마켓컬리 추천
- 경주맛집
- 황리단길맛집
- 동성로맛집
- 순천맛집
- 오뚜기 라면
- 치킨 신메뉴
- 편스토랑
- 서현역맛집
- cu 편의점
- 황리단길디저트
- 교촌치킨 신메뉴
- 푸라닭
- 분당맛집
- CU 편의점 추천
- 편의점 신제품
- 서현역중식
- 수원 맛집
- 냉동만두 추천
- 분당 맛집
- 황리단길기념품
- BBQ 신메뉴
- CU편의점 추천
- 용인맛집
- CU편의점
- 순천디저트
- 편의점 추천
- 서현 맛집
- 수지 술집
Archives
- Today
- Total
일상 메모장
strchr 사용법 및 구현 - C 문자열 처리 본문
사용법
#include <string.h>
char *strchr(const char *s, int c);
char *strrchr(const char *s, int c);
정의
문자열에서 특정 문자를 찾을 때 사용하는 함수입니다.
strchr() 함수는 문자열 s에서 첫 번째로 찾은 문자 c의 포인터를 리턴합니다.
strrchr() 함수는 문자열 s에서 마지막으로 있는 문자 c의 포인터를 리턴합니다.
반환 값
strchr() 과 strrchr() 함수는 문자열에서 찾은 문자 위치의 포인터를 리턴합니다.
만약 찾이 못했다면 NULL을 리턴합니다.
strchr() 내부 구현 (strchr 실제 구현부)
/**
* strchr - Find the first occurrence of a character in a string
* @s: The string to be searched
* @c: The character to search for
*/
char *strchr(const char *s, int c)
{
/*
* s 문자열의 처음 문자부터 c 문자와 같지 않으면
* 루프를 계속 돕니다.
* 같으면 루프를 종료하고 현재 s의 위치를 리턴합니다.
*/
for (; *s != (char)c; ++s)
if (*s == '\0')
return NULL;
return (char *)s;
}
/**
* strrchr - Find the last occurrence of a character in a string
* @s: The string to be searched
* @c: The character to search for
*/
char *strrchr(const char *s, int c)
{
const char *last = NULL;
/*
* s 문자열을 순차적으로 돌면서 c와 같은 문자가 있으면 last에 기록합니다.
* NULL이 아닐때까지 계속 돌아서 마지막 c와 같은 문자를 찾습니다.
* 마지막으로 찾은 c와 같은 문자의 위치를 리턴합니다.
*/
do {
if (*s == (char)c)
last = s;
} while (*s++);
return (char *)last;
}
strchr() 함수는 s 문자열 처음부터 c와 같은 문자를 찾을 때까지 루프를 돕니다.
c와 같은 문자를 찾으면 현재 s 포인터의 위치를 리턴합니다.
strrchr() 함수는 s 문자열 처음부터 c와 같은 문자를 찾을때까지 루프를 돕니다.
c와 같은 문자를 찾으면 현재 s 포인터의 위치를 last 변수에 저장해놓고 계속 루프를 돕니다.
또 c 와 같은 문자를 찾으면 last에 입력합니다. s 문자열의 끝까지 루프를 다 돌았으면
마지막으로 찾은 c 문자의 위치(last)를 리턴합니다.
예제
#include <string.h>
#include <stdio.h>
int main()
{
char dest[] = "abcdefgabcd";
char *first;
char *last;
/* dest 문자열에서 첫번째 나오는 'b'문자를 찾습니다. */
first = strchr(dest, 'b');
/* dest 문자열에서 마지막 나오는 'b'문자를 찾습니다. */
last = strrchr(dest, 'b');
printf("first : %s, last : %s\n", first, last);
return 0;
}
결과값은 first : bcdefgabcd, last : bcd 입니다.
'C 언어' 카테고리의 다른 글
memcpy 사용법 및 구현 - C 메모리 복사 (2) | 2020.01.29 |
---|---|
memmove 사용법 및 구현 - C 메모리 이동 (11) | 2020.01.29 |
strcat 사용법 및 구현 - C 문자열 처리 (0) | 2020.01.19 |
strcmp 사용법 및 구현 - C 문자열 처리 (5) | 2020.01.11 |
strstr 사용법 및 구현 - C 문자열 처리 (0) | 2020.01.10 |