atoi和itoa函数的实现方法

atoi的实现

#include<iostream>

using namespace std;

int atio1(char *s)

{

int sign=1,num=0;

    if(*s=='-')

        sign=-1;

    s++;

    while((*s)!='\0')

    {

        num=num*10+(*s-'0');

        s++;

    }   

    return num*sign;   

}

 

 

itoa的实现

1:

void itoa(int value, char *str)

{   

 if (value < 0)                                                       //如果是负数,则str[0]='-',并把value取反(变成正整数)  

    {        

    str[0] = '-';        

    value = 0-value;   

    } 

int i,j;    

for(i=1; value > 0; i++,value/=10)                         //从value[1]开始存放value,不过是逆序          

       str[i] = value%10+'0';                                    //将数字加上0的ASCII值(即'0')得到ASCII值   

 for(j=i-1,i=1; j-i>=1; j--,i++)                                 //将数字字符反序存放   

   {       

    str[i] = str[i]^str[j];        

    str[j] = str[i]^str[j];        

    str[i] = str[i]^str[j];   

   }    

if(str[0] != '-')                                                         //如果不是负数,则需要把数字字符下标左移一位 

   {       

     for(i=0; str[i+1]!='\0'; i++)           

     str[i] = str[i+1];     

     str[i] = '\0';   

   }

}

 

法2:

char *itoa(int num, char *str, int radix)

{

    char* ptr = str;

    int i;

    int j;

    while (num)

    {

        *ptr++  = string[num % radix];

        num    /= radix;

        if (num < radix)

        {

            *ptr++  = string[num];

            *ptr    = '\0';

            break;

        }

    }

    j = ptr - str - 1;

    for (i = 0; i < (ptr - str) / 2; i++)

    {

        int temp = str[i];

        str[i]  = str[j];

        str[j--] = temp;

    }

    return str;

}

 

 

 

posted @ 2013-11-17 11:47  天天向上...  阅读(407)  评论(0编辑  收藏  举报