int ft_atoi(const char *str)
- 헤더
#include <stdlib.h>
- 형태
int atoi(const char *str)
- const char *str
문자열 str의 값 변경 불가능.(ex. str = "asdf"처럼 문자열 값 변경은 불가능.)
포인터만 변경 가능.(ex. str++처럼 포인터 값 변경은 가능.)
입력받은 문자열을 int형으로 변환.
공백 + 부호 + 숫자문자 순서만 가능하다. 숫자문자를 제외한 다른 문자가 있으면 그 전까지만 int형으로 변환하여 반환한다.
(ex. " -2352adg34" --> -2352임.)
(ex. " +asd123" --> 공백, 부호, 숫자 순서가 아니기 때문에 변환할 수 없음. 따라서 0을 반환함.)
부호는 + 또는 - 하나만 들어갈 수 있다.(+ 또는 - 가 없을 수도 있다.)
입력받은 문자열을 int형으로 변환하여 반환.
함수가 입력을 int형의 값으로 변환할 수 없는 경우 0을 반환.
리턴값은 오버플로의 경우 정의되지 않는다.
int ft_atoi(const char *str)
{
int t;
int minus;
int result;
t = 0;
minus = 1;
result = 0;
while (str[t] == '\t' || str[t] == '\n' || str[t] == '\v' ||
str[t] == '\f' || str[t] == '\r' || str[t] == ' ')
t++;
if (str[t] == '-' || str[t] == '+')
{
if (str[t] == '-')
minus *= -1;
t++;
}
while (str[t] >= '0' && str[t] <= '9')
{
result *= 10;
result += str[t] - '0';
t++;
}
return (result * minus);
}
공백일때 계속 while문을 돌려준다. 이때 공백이 아닌 다른 문자를 만나면 while문이 종료된다.
공백이 아닌 다른 문자를 만났을 때 그때의 부호를 판단해 준다. 만약 부호가 - 라면 minus * (-1)을 해 준다.
str이 '0' ~ '9' 일때만 while문을 돌려서 result값을 구해준다. 숫자문자가 아닌 다른 문자가 나오면 자동으로 while문이 종료된다.
result 값에 minus 를 곱해서 부호를 정해 준 후 그 값을 반환한다.