itoa的两种实现

一种是linux的实现,一种是Solaris的实现,代码如下:、
None.gifnamespace linux
ExpandedBlockStart.gif{
InBlock.gif    void itoa( int i,charstring
ExpandedSubBlockStart.gif    {
InBlock.gif        int power, j;
InBlock.gif        j=i; 
InBlock.gif        for (power=1;j>=10;j/=10) 
InBlock.gif            power*=10; 
InBlock.gif        for (;power>0;power/=10)
ExpandedSubBlockStart.gif        {
InBlock.gif            *string++='0'+i/power; i%=power; 
ExpandedSubBlockEnd.gif        }
InBlock.gif        *string='';
ExpandedSubBlockEnd.gif    } 
ExpandedBlockEnd.gif}

None.gifnamespace solaris
ExpandedBlockStart.gif{
InBlock.gif    char * itoa(long n, int base
ExpandedSubBlockStart.gif    {
InBlock.gif        register char *p; 
InBlock.gif        register int minus; 
InBlock.gif        static char buf[36];
InBlock.gif        p = &buf[36]; 
InBlock.gif        *–p = ''; 
ExpandedSubBlockStart.gif        if (n < 0) { minus = 1; n = -n; } else minus = 0; 
InBlock.gif        if (n == 0)  *–p = '0'; 
ExpandedSubBlockStart.gif        else while (n > 0) { *–p = "0123456789abcdef"[n % base]; n /= base; } 
InBlock.gif        if (minus) *–p = '-';
InBlock.gif        return p;
ExpandedSubBlockEnd.gif    }
ExpandedBlockEnd.gif}

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

创作打卡挑战赛赢取流量/现金/CSDN周边激励大奖

Published by

风君子

独自遨游何稽首 揭天掀地慰生平