17 lines
307 B
C
17 lines
307 B
C
|
#include <stdlib.h>
|
||
|
#include <ctype.h>
|
||
|
|
||
|
long atol(const char *s)
|
||
|
{
|
||
|
long n=0;
|
||
|
int neg=0;
|
||
|
while (isspace(*s)) s++;
|
||
|
switch (*s) {
|
||
|
case '-': neg=1;
|
||
|
case '+': s++;
|
||
|
}
|
||
|
/* Compute n as a negative number to avoid overflow on LONG_MIN */
|
||
|
while (isdigit(*s))
|
||
|
n = 10*n - (*s++ - '0');
|
||
|
return neg ? n : -n;
|
||
|
}
|