免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6377 | 回复: 0
打印 上一主题 下一主题

[C] 如何实现一个简单高效的atoi [复制链接]

论坛徽章:
0
1 [报告]
发表于 2010-04-03 13:14 |显示全部楼层
我的实现,未必高效,但能用。
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <limits.h>
  4. int myatoi(const char*str);

  5. int main()
  6. {
  7.         unsigned int i = 0,j=0;
  8.         char *s="123423432423424234";
  9.         i = atoi(s);
  10.         j = myatoi(s);
  11.         printf("i is :%d,%d\n",i,j);
  12.         return 0;
  13. }

  14. int myatoi(const char*str) {
  15.         if(NULL == str || '\0' == *str) {
  16.                 return 0;
  17.         }
  18.         int ret=0,left_bit=sizeof(int)*8-1;
  19.         unsigned int tmp=0;
  20.         while(*str>='0' && *str <='9') {
  21.                 tmp = (*str-'0') + ret*10;
  22.                 if(tmp>>left_bit==1) {
  23.                         return INT_MAX;
  24.                 }
  25.                 ret = tmp;
  26.                 str++;
  27.         }
  28.         return ret;
  29. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP