[C/C++] atoi 구현 / 문자열을 숫자로

atoi 함수의 핵심 조건 세 가지

  1. 문자열의 초반에 오는 white space 문자는 무시한다.
  2. 부호는 최대 한 개까지만 올 수 있다.
  3. 숫자를 읽기 시작한다면 다른 문자열이 오기 전까지 읽는다. (0~9를 제외한 다른 문자)
#include <stdio.h>

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

    i = 0;
    minus = 1;
    result = 0;
    while ((str[i] >= 9 && str[i] <= 13) || (str[i] == 32))
        i++;
    while (str[i] == '-' || str[i] == '+')
    {
        if (str[i] == '-')
            minus = minus * (-1);
        i++;
    }
    while (str[i] >= '0' && str[i] <= '9')
    {
        result = 10 * result;
        result = result + (str[i] % '0');
        i++;
    }
    return (result * minus);
}

int main() 
{
    char a[] = "  -+--12ss34";
    printf("%d", ft_atoi(a));
}