Dia Egg - Shugo Chara

C

atoi 함수의 구현

별ㅇI 2023. 10. 9. 19:16
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