Linux C 프로그래밍에 itoa () 함수 문제 없음

ubuntu linuxc 프로그래밍을 사용하여 Linux 핵에atoi () 함수만 있고 stdlib에 포함된 것을 발견했습니다.h 헤더 파일에 토마토 () 함수가 없습니다. 인터넷에서 토마토 () 함수를 실현한 코드를 찾았습니다.
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 
  #include 

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

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

이때string은 변환된 문자열 값입니다

좋은 웹페이지 즐겨찾기