728x90
[이전 글]
[Libft] 나만의 첫 번째 라이브러리
1. 프로젝트 소개 C 프로그래밍을 할 때 매우 유용한 표준 함수들을 사용할 수 없다면 굉장히 지루할 거예요. 이 프로젝트를 통해 이러한 표준 함수들을 구현하고, 이해하고, 어떻게 사용하는지
bini-079.tistory.com
[다음 글]
[Libft] Part2 : Additional functions
삐니의 소소한 일상 [Libft] Part2 : Additional functions 본문 42 SEOUL/Libft [Libft] Part2 : Additional functions 에삐니 2022. 3. 24. 01:22 Prev 1 2 3 4 5 6 7 8 9 ··· 104 Next
bini-079.tistory.com
Part1 : Libc functions
아래의 함수들을 다시 구현하세요. 이 함수들은 외부 함수를 필요로 하지 않습니다 :
- isalpha, isdigit, isalnum, isascii, isprint
- bzero, memset, memcpy, memmove, memchr, memcmp
- strlen, strnstr, strlcpy, strlcat, strchr, strrchr, strncmp
- toupper, tolower, atoi
다음의 함수들은 외부 함수 malloc을 사용하여 구현하세요 :
- calloc, strdup
ft_toupper
int ft_toupper(int c)
{
if (c >= 'a' && c <= 'z')
return ('A' + (c - 'a'));
else
return (c);
}
- 문자를 소문자에서 대문자로 변환하는 함수이다.
ft_tolower
int ft_tolower(int c)
{
if (c >= 'A' && c <= 'Z')
return ('a' + (c - 'A'));
else
return (c);
}
- 문자를 대문자에서 소문자로 변환하는 함수이다.
ft_atoi
int ft_atoi(const char *str)
{
size_t i;
int sign;
unsigned long long max;
unsigned long long num;
i = 0;
num = 0;
sign = 1;
max = 9223372036854775807
while (str[i] && (str[i] == 32 || (str[i] >= 9 && str[i] <= 13)))
i++;
if (str[i] == '-')
sign = -1;
if (str[i] == '-' || str[i] == '+')
i++;
while (ft_isdigit(str[i]))
{
num = (num * 10) + (str[i] - '0');
if (num >= max && sign == 1)
return (-1);
else if (num > max + 1 && sign == -1)
return (0);
i++;
}
return (num * sign);
}
- 문자열 정수를 int형 정수로 변환하는 함수이다.
- 공백을 제외하고 부호문자를 처리한 후 숫자로 처리한다.
- 숫자가 아닌 다른 문자가 나오면 멈추고 이전까지 계산한 수를 반환한다.
- 오버플로우 값이 들어오면 -1, 언더플로우 값이 들어오면 0을 리턴한다.(strtol 함수의 결과값 처리 과정에서 생기는 erange 오류)
- 결과적으로 오버플로우, 언더플로우의 경우 libft에서 신경쓰지 않아도 되는 부분이라고 한다.
728x90
반응형
'42 SEOUL > 0_Libft' 카테고리의 다른 글
[Libft] Part2 : Additional functions (0) | 2022.03.28 |
---|---|
[Libft] Part1 : strlen, strnstr, strlcpy, strlcat, strchr, strrchr, strncmp (0) | 2022.03.26 |
[Libft] Part1 : bzero, memset, memcpy, memmove, memchr, memcmp (0) | 2022.03.25 |
[Libft] Part1 : isalpha, isdigit, isalnum, isascii, isprint (0) | 2022.03.25 |
[Libft] 프로젝트 소개 (0) | 2022.03.22 |
댓글