본문 바로가기

프로그래밍/C

[library] strrchr 구현하기

📌 매뉴얼 (Linux)

더보기

NAME
       strrchr - locate character in string
: 문자열에서 문자를 찾기


SYNOPSIS
       #include <string.h>
       char *strrchr(const char *s, int c);

DESCRIPTION
       The strrchr() function returns a pointer to the last occurrence of  the  character  c  in  the
       string s.
       Here "character" means "byte"; these functions do not work with wide or multibyte characters.
: strrrchr() 함수는 문자열에서 문자 c의 마지막 발생에 대한 포인터를 반환한다.

여기서 문자(character)는 바이트(byte)를 의미한다.

이러한 기능은 넓은 문자나 여러 바이트 문자에서는 작동하지 않는다.


RETURN VALUE
       The strchr() and strrchr() functions return a pointer to the matched character or NULL if  the
       character  is  not found.  The terminating null byte is considered part of the string, so that
       if c is specified as '\0', these functions return a pointer to the terminator.
: strchr() 및 strrchr() 함수는 문자가 발견되지 않으면 일치하는 문자 또는 NULL로 포인터를 반환한다. 마지막 NULL 바이트는 문자열의 일부로 간주되므로 c가 '\0'으로 지정되면 이 함수는 종결 부분으로 포인터를 반환한다.

 

📌 작성 코드

char	*do_strrchr(const char *s, int c)
{
	size_t	len;

	len = do_strlen(s);
	while (len != 0)
	{
		if (s[len] == c)
			return ((char *)s + len);
		len --;
	}
	if (s[len] == c)
		return ((char *)s + len);
	return (0);
}

 

📌 코드 리뷰

strrchr 은 strchr과 유사한 함수이며, 탐색하는 방향이 strchr의 반대로 동작한다.

문자열의 끝에서부터 탐색하기 위해, strlen 함수를 가져와 len을 구하고, 해당 len 만큼 반복을 돌기 위해,

반복문 내에서 len을 --로 줄여 0까지 반복하게 한다.

끝에서 부터 문자를 c와 비교해 동일한지 판별하고, 같으면 그 주소를 반환하기 위해 문자열s의 첫 주소에

인덱스인 len을 더해 반환하게 된다.

반복문이 종료되면, len이 0이 되고, 그 부분까지 따로 판별해주는 과정까지 거치면 된다.

그 외의 다른 요소들은 strchr과 동일하다.

'프로그래밍 > C' 카테고리의 다른 글

[library] strnstr 구현하기  (0) 2024.05.10
[library] strncmp 구현하기  (0) 2024.05.10
[study] 가변인자 (variable argument)  (0) 2024.04.03
[library] strchr 구현하기  (0) 2024.03.30
[library] strlcat 구현하기  (2) 2024.03.19
Recent Posts
Popular Posts
Recent Comments