牵着老婆满街逛

严以律己,宽以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

itoa的两种实现

一种是linux的实现,一种是Solaris的实现,代码如下:、
namespace linux
{
    
void itoa( int i,char* string
    
{
        
int power, j;
        j
=i; 
        
for (power=1;j>=10;j/=10
            power
*=10
        
for (;power>0;power/=10)
        
{
            
*string++='0'+i/power; i%=power; 
        }

        
*string='\0';
    }
 
}


namespace solaris
{
    
char * itoa(long n, int base
    
{
        register 
char *p; 
        register 
int minus; 
        
static char buf[36];
        p 
= &buf[36]; 
        
*--= '\0'
        
if (n < 0{ minus = 1; n = -n; } else minus = 0
        
if (n == 0)  *--= '0'
        
else while (n > 0*--= "0123456789abcdef"[n % base]; n /= base; } 
        
if (minus) *--= '-';
        
return p;
    }

}


关键还是怎样去求整形的位数,求出来,剩下来的事情就很少了。

posted on 2009-01-05 15:42 杨粼波 阅读(2785) 评论(1)  编辑 收藏 引用

评论

# re: itoa的两种实现[未登录] 2010-10-29 15:17 Knight

你的itoa有个问题:
你传进来的参数char *string, 它的空间大小用户无法知道  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理