libft, 자신이 구현하는 libc - 서론과 is 시리즈 함수

Sandel·2022년 2월 3일
0

libft

목록 보기
1/1

서론

libft의 서론

libft의 목적은 흔히 쓰이는 함수들을 재구성하여 이후의 모든 프로젝트에 사용될 C 라이브러리를 제작하는 데 있다.

is 시리즈 함수의 설명

is 시리즈 함수는 매개변수가 아스키 코드의 특정 범위 내에 속하는지 판별하는 함수들이다. 특정 범위 내에 속한다면 1을 리턴하고 아닐 경우에는 0을 리턴한다.

is 시리즈 함수에서 누구나 의문을 가지게 될 점이 있는데 함수 프로토타입에서 매개변수로 전달되는 비교 대상인 값 c가 unsigned char 혹은 char 자료형으로 전달되지 않는 점이다. 이는 초창기 C 언어(K&R C(1978)와 그 이전으로 추정됨)의 함수 호출자에는 호출 유형이 무엇인지 알려주는 프로토타입이 없었기 때문에 즉, 함수를 작성할 때 double이 아닌 모든 매개변수는 선언 한 방법에 관계없이 스택에 정수로 저장되었으며 컴파일러는 이를 처리하기 위해 코드를 넣었다고 한다. 이후 ANSI 위원회가 처음 C를 표준화했을 때 ANSI 위원회가 문자 리터럴이 단순히 int가 되도록 규칙을 변경해 매개변수로 전달된 모든 것을 int형 또는 int형의 배수로 표준화했기 때문이라고 한다.
자세한 사항은 이 곳 참조 https://www.web-dev-qa.com/ko/c++/%eb%ac%b8%ec%9e%90-%eb%8c%80%ec%8b%a0-c-%eb%ac%b8%ec%9e%90-%eb%a6%ac%ed%84%b0%eb%9f%b4%ec%9d%b4-int-%ec%9d%b8-%ec%9d%b4%ec%9c%a0%eb%8a%94-%eb%ac%b4%ec%97%87%ec%9e%85%eb%8b%88%ea%b9%8c/958120519/

is 시리즈 함수 코드

isalpha의 코드이다.

int	ft_isalpha(int c)
{
	unsigned char	ch;

	ch = c;
	if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'))
		return (1);
	return (0);
}

isdigit의 코드이다.

int	ft_isdigit(int c)
{
	unsigned char	ch;

	ch = c;
	if (ch >= '0' && ch <= '9')
		return (1);
	return (0);
}

isalnum의 코드이다.

int	ft_isalnum(int c)
{
	unsigned char	ch;

	ch = c;
	if (ft_isalpha(ch) || ft_isdigit(ch))
		return (1);
	return (0);
}

isprint의 코드이다.

int	ft_isprint(int c)
{
	unsigned char	ch;

	ch = c;
	if (ch >= 32 && ch <= 126)
		return (1);
	return (0);
}

isascii의 코드이다.

int	ft_isascii(int c)
{
	unsigned char	ch;

	ch = c;
	if (ch >= 0 && ch <= 127)
		return (1);
	return (0);
}

보다시피 매우 간결한 구조인 것을 확인할 수 있어 이름과 연관해 함수들의 역할을 생각해보는데 추가설명은 없어도 되리라 생각한다.

profile
뉴비

0개의 댓글