1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#include <stdlib.h> #include <ctype.h> int atoi(const char *s) { int n=0, neg=0; while (isspace(*s)) s++; switch (*s) { case '-': neg=1; case '+': s++; } /* Compute n as a negative number to avoid overflow on INT_MIN */ while (isdigit(*s)) n = 10*n - (*s++ - '0'); return neg ? n : -n; }