Do You Coding?

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

CS & Engineering/C

[library] tolower ๊ตฌํ˜„ํ•˜๊ธฐ

๐Ÿ“Œ ๋งค๋‰ด์–ผ (Linux)

๋”๋ณด๊ธฐ

NAME
       tolower - convert lowercase
: ์†Œ๋ฌธ์ž๋กœ ๋ฐ”๊พธ๊ธฐ


SYNOPSIS
       #include <ctype.h>
       int tolower(int c);


DESCRIPTION
       These functions convert uppercase letters to lowercase, and vice versa.


       If c is an uppercase letter, tolower() returns its lowercase equivalent, if a lowercase repreโ€
       sentation exists in the current locale.  Otherwise, it returns c.
: ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์€ ๋Œ€๋ฌธ์ž๋ฅผ ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ๊ทธ ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค.

c๊ฐ€ ๋Œ€๋ฌธ์ž์ธ ๊ฒฝ์šฐ tolower()๋Š” ์†Œ๋ฌธ์ž๋กœ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด c๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.


RETURN VALUE
       The value returned is that of the converted letter, or c if the conversion was not possible.

: ๋ฐ˜ํ™˜๋˜๋Š” ๊ฐ’์€ ๋ณ€ํ™˜๋œ ๋ฌธ์ž ๋˜๋Š” ๋ณ€ํ™˜์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ์— c๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

๐Ÿ“Œ ์ž‘์„ฑ ์ฝ”๋“œ

int	do_tolower(int c)
{
	if (65 <= c && c <= 90)
		c = c | (1 << 5);
	return (c);
}

 

๐Ÿ“Œ ์ฝ”๋“œ ๋ฆฌ๋ทฐ

tolower๋„ toupper์™€ ์œ ์‚ฌํ•˜๊ฒŒ ๋‹จ์ˆœํžˆ ๋Œ€๋ฌธ์ž ์˜์–ด๋ฅผ ์†Œ๋ฌธ์ž๋กœ ๋ฐ”๊ฟ”์„œ ๋ฐ˜ํ™˜ํ•ด์ค€๋‹ค.

ํ•จ์ˆ˜๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด, if๋ฌธ์—์„œ 65 ~ 90์— c๊ฐ€ ํ•ด๋‹น๋˜๋Š”์ง€ ํŒ๋ณ„ํ•˜๋Š”๋ฐ, ์•„์Šคํ‚ค ์ฝ”๋“œ ์ƒ์—์„œ ๊ฐ๊ฐ 'A', 'Z'๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

๋”ฐ๋ผ์„œ, ๋Œ€๋ฌธ์ž์— ํ•ด๋‹น๋˜๋ฉด ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๊ณ , ์ด์ œ ์†Œ๋ฌธ์ž๋กœ ๋ฐ”๊ฟ”๋งŒ ์ฃผ๋ฉด ๋˜๋Š”๋ฐ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋น„ํŠธ์—ฐ์‚ฐ์„ ํ•œ๋‹ค.

 

์šฐ์„  1 << 5 ๋Š”, ํ”ผ์—ฐ์‚ฐ์ž์ธ 1์„ 5๋งŒํผ ์™ผ์ชฝ์œผ๋กœ ๋น„ํŠธ ์ด๋™์„ ์‹œ์ผœ์ค€๋‹ค. (toupper์—์„œ์™€ ๋™์ผ)

00000000 00000000 00000000 00000001 ์—์„œ 5์นธ ์™ผ์ชฝ์œผ๋กœ ์ด๋™ํ•˜์—ฌ

00000000 00000000 00000000 00100000 ๊ฐ€ ๋˜์–ด์ง„ ์ƒํƒœ์ด๋‹ค. (int ์ด๋ฏ€๋กœ 32๋น„ํŠธ)

 

๊ธฐ์กด์— ์žˆ๋˜ c (์˜ˆ์‹œ๋กœ 'D' ์˜ ๊ฐ’์ธ 68์ด ๋“ค์–ด์žˆ๋‹ค๊ณ  ๊ฐ€์ •)์™€ | ๋น„ํŠธ ์—ฐ์‚ฐ์„ ํ•ด์ฃผ๋Š”๋ฐ,

OR ์—ฐ์‚ฐ์ด๋ฏ€๋กœ ๋‘˜ ์ค‘ ํ•˜๋‚˜๋ผ๋„ 1์ด๋ฉด 1์ด ๋˜๋„๋ก ๊ณ„์‚ฐ๋œ๋‹ค. ๊ทธ๋Ÿผ,

00000000 00000000 00000000 01000100 

| 00000000 00000000 00000000 00100000

__________________________________

00000000 00000000 00000000 01100100

 

์ด๋ผ๋Š” ๊ฐ’์ด ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค. ์ด๋ฅผ 10์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•ด๋ณด๋ฉด, 100์ด ๋‚˜์˜ค๊ณ , ์ด๋Š” 'd' ๋ฅผ ์˜๋ฏธํ•˜๋ฏ€๋กœ ์†Œ๋ฌธ์ž๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค.

 

์ด๋ ‡๊ฒŒํ•ด์„œ, toupper ์™€ tolower๋ฅผ ์กฐ๊ธˆ ๋” ์ฐธ์‹ ํ•˜๊ฒŒ ๋น„ํŠธ์—ฐ์‚ฐ์„ ํ†ตํ•ด ๋งŒ๋“ค์–ด๋ณด์•˜๋‹ค.