/* ************************************************************************** */
/*                                                                            */
/*                                                        :::      ::::::::   */
/*   ft_atoi.c                                          :+:      :+:    :+:   */
/*                                                    +:+ +:+         +:+     */
/*   By: jayang <[email protected]>                      +#+  +:+       +#+        */
/*                                                +#+#+#+#+#+   +#+           */
/*   Created: 2022/02/09 09:49:23 by jayang            #+#    #+#             */
/*   Updated: 2022/02/09 13:44:39 by jayang           ###   ########.fr       */
/*                                                                            */
/* ************************************************************************** */

#include <unistd.h>
char	*ft_isspace(char *str)
{
	if (*str == ' ' || (9 <= *str && *str <= 13))
		str++;
	return (str);
}

char	*ft_check_minus(char *str, int *minus)
{
	*minus = 1;
	while (*str == '+' || *str == '-')
	{
		if (*str == '-')
			*minus *= -1;
		str++;
	}
	return (str);
}

int	ft_atoi(char *str)
{
	int	minus;
	int	result;

	str = ft_isspace(str);
	str = ft_check_minus(str, &minus);
	result = 0;
	while ('0' <= *str && *str <= '9')
	{
		result = (result * 10) + (*str - '0');
		str++;
	}
	return (minus * result);
}

1. atoi, atof, atol 함수 이름의 기원

atoi 함수를 살펴보면 a - to - i 이렇게 나눌 수 있습니다. a = char(ASCII), i = int 로 보면 char(ASCII) to integer 라는 이름으로 풀 수 있습니다.

즉. char 타입을 int 타입으로 변경한다. 이렇게 이해하시면 되겠습니다.

atoi = char to int = 문자열을 정수 타입으로

atof = char to double = 문자열을 실수 타입으로

atol = char to long int = 문자열을 long 정수 타입으로

중요한것은 여기서 char는 char[N], char 로 표현이 되는 문자열*을 말합니다.

개인적으로는 저는 char* to int 이 표현이 더 정확한 표현이라고 생각이 듭니다.

출처: