blob: 94c42ccc59b9ffc981c21b527e0d96c0bd1a6f29 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
#define MIN_INT (1 << 31)
#define MAX_INT (~(1 << 31))
int ft_atoi(const char *nptr)
{
unsigned int nb;
int i;
int is_negative;
while (*nptr == ' ' || *nptr == '\t'|| *nptr == '\n'
|| *nptr == '\v'|| *nptr == '\f'|| *nptr == '\r')
nptr++;
is_negative = 0;
if (*nptr == '-' || *nptr == '+')
{
if (*nptr == '-')
is_negative = 1;
nptr++;
}
i = 0;
nb = 0;
while (nptr[i] >= '0' && nptr[i] <= '9')
{
if (!is_negative && nb > (unsigned int)MAX_INT)
return (-1);
else if (nb > (unsigned int)MIN_INT)
return (0);
nb *= 10;
nb += nptr[i] - '0';
i++;
}
return ((int)(is_negative ? -nb : nb));
}
|