码迷,mamicode.com
首页 > 其他好文 > 详细

atoi()函数实现

时间:2015-05-05 21:42:45      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

实现atoi()函数,在出错时返回0;

 

 1 int atoi(const char *str)
 2 {
 3     if((str == NULL) || (strlen(str) == 0)) {
 4         return 0;
 5     }
 6 
 7     int value = 0;
 8     int sign = 0;
 9     int index = 0;
10     int minMark = 0;
11     const int MAX = 2147483647;
12     const int MIN = -2147483648;
13     while(str[index] != \0) {
14         char c = str[index];
15         if((c == +) || (c == -)) {
16             if(sign == 0) {
17                 sign = (c == + ? 1 : -1);
18             }else {
19                 return 0;
20             }
21         }else if((c >= 0) && (c <= 9)) {
22             if(value > MAX / 10) {
23                 return 0;
24             }else if(value == MAX / 10) {
25                 if(c - 0 > MAX % 10 + 1) {
26                     return 0;
27                 }else if((c - 0 == MAX % 10 + 1) && (sign == -1) && (minMark == 0)) {
28                     minMark = 1;
29                     value = value * 10 + MAX % 10;
30                 }else if(c - 0 <= MAX % 10) {
31                     value = value * 10 + c - 0;
32                 }else {
33                     return 0;
34                 }
35             }else{
36                 value = value * 10 + c - 0;
37             }
38         }else {
39             return 0;
40         }
41         index ++;
42     }
43     if(minMark == 1) {
44         return MIN;
45     }else if(sign == -1) {
46         value *= -1;
47     }
48     return value;
49 }

 

atoi()函数实现

标签:

原文地址:http://www.cnblogs.com/seeit/p/4480139.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!