libft의 목적은 흔히 쓰이는 함수들을 재구성하여 이후의 모든 프로젝트에 사용될 C 라이브러리를 제작하는 데 있다.
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/
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);
}
보다시피 매우 간결한 구조인 것을 확인할 수 있어 이름과 연관해 함수들의 역할을 생각해보는데 추가설명은 없어도 되리라 생각한다.