Do You Coding?

[library] strrchr ๊ตฌํ˜„ํ•˜๊ธฐ ๋ณธ๋ฌธ

CS & Engineering/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๊ณผ ๋™์ผํ•˜๋‹ค.