itoa函数递归实现

  库函数中有atoi函数,用意是将字符形式输入的数据转换成数字,而库函数有没有提供一个将数字转换成字符的函数呢?答案是有的,而且功能很是强大,那就是sprintf()、snprintf()格式化转换函数,它的原型是: 

int sprintf(char *buf,const char *format,...) 
int snprintf(char *buf,int size,const char *format,...) 

以上都是将数字转换成字符的形式的标准库函数。

那么有没有别的自己实现的函数呢?好看看下面递归实现的:

void _itoa(int value,char *str,int radix)
{
    char temp[2]=" ";
    int a=0;
    if (value>0)
    {
        if(radix == 2){
            _itoa(value/2,str,2);
            temp[0]=(char)(value%2+'0');
            strcat(str,temp);
        }
        else if(radix == 8){
            _itoa(value/8,str,8);
            temp[0]=(char)(value%8+'0');
            strcat(str,temp);
        }
      else if(radix == 16){
            _itoa(value/16,str,16);
            a=value%16;
            if(a<=9)
                temp[0] = a +'0';
            else
                 temp[0] =(char) (a+55);   
            strcat(str,temp);
        }  
        else {
            _itoa(value/10,str,10);
            temp[0]=(char)(value%10+'0');
            strcat(str,temp);
        }
    }
    else 
        return ;
}                        

该函数可以将一个十进制的正整数转换成二进制、十进制、八进制、十六进制形式的字符串

 

posted on 2014-03-14 15:59  程良  阅读(694)  评论(0编辑  收藏  举报

导航