728x90
반응형
atoi 함수
atoi 라는 뜻은 a to i (ascii to integer)로 풀어서 해석이 가능하다.
즉 char type을 정수형으로 바꾼다는 의미이다. stdlib.h라는 헤더 파일에 속해 있는 함수이고 원형은 int atoi (const char* cStr)이다.
주의해야 할 점은 총 3개로 나눌 수 있는데
- 부호는 맨 앞에 있는 것 하나만 취급, 2개 이상일시 0 반환
- 앞에 나오는 whitespace는 무시
- 숫자가 아닌 문자가 나오면 취급하지 않음
으로 정리할 수 있다.
C로 구현
int ft_isspace(char c)
{
if (c == ' ' || c == '\n')
{
return (1);
}
else if (c == '\t' || c == '\v')
{
return (1);
}
else if (c == '\f' || c == '\r')
{
return (1);
}
else
{
return (0);
}
}
int ft_isnum(char c)
{
if (c <= 57 && c >= 48)
{
return (1);
}
return (0);
}
int ft_atoi(const char *str)
{
int i;
int result;
int minus;
i = 0;
result = 0;
minus = 1;
while (ft_isspace(str[i]) == 1)
i++;
if (str[i] == '-' || str[i] == '+')
{
if (str[i] == '-')
minus = -1;
i++;
}
while (str[i] != '\0')
{
if (ft_isnum(str[i]) == 1)
result = result * 10 + (str[i] - '0');
else
return (result * minus);
i++;
}
return (result * minus);
}
// #include <stdio.h>
// #include <stdlib.h>
// int main(void)
// {
// printf("ft_atoi : %d\n", ft_atoi(" - 2147483648star"));
// printf("atoi : %d", atoi(" - 2147483648star"));
// return (0);
// }
728x90
반응형
'C' 카테고리의 다른 글
isascii 함수의 구현 (0) | 2023.10.09 |
---|---|
isalnum 함수의 구현 (0) | 2023.10.09 |
isdigit 함수의 구현 (0) | 2023.10.09 |
isalpha 함수의 구현 (2) | 2023.10.06 |
C언어 간단 정리 (0) | 2023.08.19 |