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

整数装换为字符串intToArray与字符串转为整数 arrayToInt实现

时间:2015-05-11 17:49:17      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:

7.  整数装换为字符串itoa的实现

 1 char *intToArray(int number, char *str)
 2 {
 3     if(str == NULL)
 4     {
 5         return NULL;
 6     }
 7     char *ret = str;
 8     char *left = str;
 9     char temp = \0;
10     // 负数的处理
11     if(number < 0)
12     {
13         number = -number;
14         *ret++ = -;
15         left++;
16     }
17     // 辗转对10求余法 分离各个位的数字
18     while (number > 0)
19     {
20         *ret++ = number%10 + 0; // 将数字转化为ascall码
21         number = number/10;
22     }
23     *ret = \0;
24     ret--;
25     
26     /* 逆序 */
27     while (ret > left)
28     {
29         temp = *left;
30         *left++ = *ret;
31         *ret-- = temp;
32     }
33     return str;
34 }

 

字符串转为整数 arrayToInt

需考虑字符串是负数、是否包含字母,及转换后的数字是否溢出等情况,包含字母的处理 -123asd455 则为-123,asd122作为0处理。

 1 int arrayToInt(char *str)
 2 {
 3     
 4     /* 思路: 逐一遍历字符串 为空 或者 为字符就结束遍历 取出的字符逐一*10*/
 5     long long val = 0;
 6     int flag = 0;
 7     char *src = str;
 8     bool minus = false;
 9     /* 安全性 */
10     if(str == NULL)
11     {
12         return 0;
13     }
14     // 处理正负符号的情况 无论正负都占一个位使指针加一
15     if(*src == -)
16     {
17         src++;
18         minus = true;
19     }
20     else if (*src == +)
21     {
22         src++;
23     }
24     
25     while ((*src != \0) && ((*src - 0 >= 0) && (*src - 0 <= 9)))
26     {
27         //逐位乘以10
28         flag = minus ? -1:1;
29         val = val * 10 + flag*(*src - 0);
30         /* 处理溢出问题:int最大值0x7FFFFFFF 最小值80000000 */
31         if(((minus) && (val > 0x7FFFFFFF)) ||
32            ((!minus) && (val < (signed int)0x80000000)))
33         {
34             val = 0;
35             break;
36         }
37         src++;
38     }
39     printf("val= %d",(int)val*flag);
40     return (int)val;
41 }
42  

 

整数装换为字符串intToArray与字符串转为整数 arrayToInt实现

标签:

原文地址:http://www.cnblogs.com/jianghg/p/4495028.html

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