频道栏目
首页 > 资讯 > 其他 > 正文

不使用库函数将字符串转换为数字

15-11-05        来源:[db:作者]  
收藏   我要投稿


第14行,把参数n的绝对值赋给temp,以后在计算各个位的整数时用temp,这样保证在负数情况下取余不会出现问题。
第20行,取整数最末尾的数字,+'0'是将其转换为字符,
第21行,取剩余数字,
当执行完while(temp)这个循环,就将该整数的所有位都从右到左的剥离出来,并依此存于buf数组中,例如temp=123,则此时buf[0]=3,buf[1]=2,buf[2]=3,这是倒序的。
第24行,计算转换后字符串的长度,如果是负数,长度还应该再加1,因为还要存放负号。
第27行开始的while(1)循环中,把buf数组中非0元素逆向复制到参数str指向的内存中去,这里有一个很重要的地方,就是前面第12行必须赋初值,即char buf[10]=""; 如果没有后面的 ="",而是只有char buf[10],那么在执行while(1)循环时,就无法判断buf数组中具体是哪一个元素为0
 
举个例子,如果n=123,那么length=3,则buf数组存储完buf[0],buf[1],buf[2]之后,就会跳出,那么buf[3]=0;
          如果n=-123,则length=4,  buf数组也是存储完buf[0],buf[1],buf[2]之后,就会跳出,那么buf[3]=0;
所不同之处在于,执行while(1)循环时,判断if(buf[length-i-1]==0)  break; 由于length的不同,要想break,所需要执行的次也不同,n=123时,需i=-1,即 3-(-1)-1时,才能得到buf[3],方能break;而n=-123时,由于length=4,只需i=0时,就可得到buf[3],就能break;
那么,我们只需判断最终跳出while(1)循环时,i的数值,就能判断n原本是正数还是负数
i=-1时,n是正数
i=0时,n时负数,需要令str[0]='-'
相关TAG标签
上一篇:java中判断字符串是否为数字的三种方法
下一篇:不必更新病毒库 病毒难逃新一代杀软“火眼金睛”
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站