1 #include<iostream>
2 using namespace std;
3 int atoi1(char *s)
4 {
5 int sign=1,num=0;
6 if(*s=='-')
7 sign=-1;
8 else if(*s=='+')
9 sign=1;
10 s++;
11 while((*s)!='\0')
12 {
13 num=num*10+(*s-'0');
14 s++;
15 }
16 return num*sign;
17 }
18
19 int main()
20 {
21 char *s="-123567890";
22 cout<<atoi1(s);
23 system("pause");
24 }
25
26
27 下面是微软对该函数的实现
28 long atol(const char *nptr)
29 {
30 int c;
31 long total;
32 int sign;
33
34
35 while ( isspace((int)(unsigned char)*nptr) )
36 ++nptr;//吸收空字符
37
38 c = (int)(unsigned char)*nptr++;
39 sign = c;
40 if (c == '-' || c == '+')
41 c = (int)(unsigned char)*nptr++;
42
43 total = 0;
44
45 while (isdigit(c)) {
46 total = 10 * total + (c - '0');
47 c = (int)(unsigned char)*nptr++;
48 }
49
50 if (sign == '-')
51 return -total;
52 else
53 return total;
54 }