Linux C编程下没有 itoa()函数的问题

用ubuntu linux c编程,发现Linux内核中只有atoi()函数,被包含在stdlib.h头文件中,而没有itoa()函数,网上查了有一个实现了itoa()函数的代码

void   itoa   (   unsigned   long   val,   char   *buf,   unsigned   radix   )   
{   
                char   *p;                                 /*   pointer   to   traverse   string   */   
                char   *firstdig;                   /*   pointer   to   first   digit   */   
                char   temp;                             /*   temp   char   */   
                unsigned   digval;                 /*   value   of   digit   */   

                p   =   buf;   
                firstdig   =   p;                       /*   save   pointer   to   first   digit   */   

                do   {   
                        digval   =   (unsigned)   (val   %   radix);   
                        val   /=   radix;               /*   get   next   digit   */   

                        /*   convert   to   ascii   and   store   */   
                        if   (digval   >   9)   
                                *p++   =   (char   )   (digval   -   10   +   'a ');     /*   a   letter   */   
                        else   
                                *p++   =   (char   )   (digval   +   '0 ');               /*   a   digit   */   
                }   while   (val   >   0);   

                /*   We   now   have   the   digit   of   the   number   in   the   buffer,   but   in   reverse   
                      order.     Thus   we   reverse   them   now.   */   

                *p--   =   '\0 ';                         /*   terminate   string;   p   points   to   last   digit   */   

                do   {   
                        temp   =   *p;   
                        *p   =   *firstdig;   
                        *firstdig   =   temp;       /*   swap   *p   and   *firstdig   */   
                        --p;   
                        ++firstdig;                   /*   advance   to   next   two   digits   */   
                }   while   (firstdig   <   p);   /*   repeat   until   halfway   */   
}

不过,测试时发现这个实现将数字转换成了乱码。比较简洁的方法是用sprintf()函数代替。具体代码如下:

  #include <stdlib.h>
  #include <stdio.h>

  int main()
  {
      int number = 429496729;
       char string[25];
       sprintf(string, "%d", number);

       printf("integer = %d string = %s\n", number, string);
       return 0;
  }

此时string就是转换后的字符串值

  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

纵横千里,捭阖四方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值