Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > atoi函数
【标  题】:atoi函数
【关键字】:atoi
【来  源】:http://blog.chinaunix.net/article.php?articleId=53938&blogId=8556

atoi函数

Your Ad Here 又被人问了这个,自己简单写了一个,然后看了别人写的,发现自己还真是头脑简单,再这样下去怎么活啊;

这是俺的简易版本,5分钟左右;

int atoi(char * str){
 int length, value , base ;
 int idx;

 if(!str) return 0;
 
 length = strlen(str);
 if(length <= 0) return 0;
 base = 1;
 value = 0;
 for(idx = length-1; idx>0 ; idx--){
  value+= (str[idx] - '0') * base; 
  base *= 10;
 }
 if(str[idx] == '-'){
  value = -value;
 }else{
  value += (str[idx] - '0') *base;
 }
 return value;
}

这个是solaris里面的

#define ATOI

#ifdef ATOI
typedef int TYPE;
#define NAME atoi
#else
typedef long TYPE;
#define NAME atol
#endif

TYPE
NAME(const char *p)
{
 TYPE n;
 int c, neg = 0;
 unsigned char *up = (unsigned char *)p;

 if (!isdigit(c = *up)) {
  while (isspace(c))
   c = *++up;
  switch (c) {
  case '-':
   neg++;
   /* FALLTHROUGH */
  case '+':
   c = *++up;
  }
  if (!isdigit(c))
   return (0);
 }
 for (n = '0' - c; isdigit(c = *++up); ) {
  n *= 10; /* two steps to avoid unnecessary overflow */
  n += '0' - c; /* accum neg to avoid surprises at MAX */
 }
 return (neg ? n : -n);
}

考虑得可真细致!!
C++的缺陷(1)——Stream的缺陷:【上一篇】
一代算法大师 Donald E. Knuth:【下一篇】
【相关文章】
  • atoi,atol,strtod,strtol,strtoul实现类型转换
  • 【随机文章】
  • 浅析灰鸽子的防范与清除
  • 在weblogic 8.1 下配置Tx 数据源(Tx Data Source)
  • 和一个朋友交流的一个问题,很有意思。
  • 用JS将网页窗口由小变大
  • FreeBSD5.3中文工作站安装
  • [TDD开发的全过程] 一、设计阶段
  • HOW TO:可视化配置数据源连接字符串(二)
  • Flash文字logo生成
  • 频宽管理服务器–BV-700/BV-800
  • 几句话介绍MagicAjax
  • 【相关评论】
    发表人:fkMe Post @ 2007-4-20 17:44:35
    邮件:shityfkU.com
    比尔那么有钱,“再这样下去怎么活啊!”
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.