【摘】用C实现将数组转换为字符串

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

char   * digitToAlpha ( int  val,  char   * buf, unsigned radix);

int  main( int  argc,  char   * argv[])
{
  
int  iNum = 1000 ;
  
char  strNum[ 10 ] = "" ;
  digitToAlpha(iNum,strNum,
10 );
  printf(
" %s\n " ,strNum);
  
  system(
" PAUSE " );    
  
return   0 ;
}

/*
功能:将数值转换为字符串
参数:第一个是要转化的整数   
     第二个是转化后的字符串
     第三个是要转化整数的基数,就是说如果基数是10,就可以直接转化,如果不是10,是其他值(2-36之间),则先把该整数转化为该基数的数后,再转化为字符串
*/
char   * digitToAlpha ( int  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; 

    
if (val < 0 )
    { 
        
/*  negative, so output '-' and negate  */  
        
* p ++=   ' - '
        val 
=  (unsigned  long )( - ( long )val); 
    } 

    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; 
        
* =* firstdig; 
        
* firstdig =  temp;  /*  swap *p and *firstdig  */  
        
-- p; 
        
++ firstdig;      /*  advance to next two digits  */  
    } 
while  (firstdig  <  p);  /*  repeat until halfway  */  

    
return  buf; 
}

 

该程序的测试环境:

WinXPSP2,Dev C++ 4.9.9.2

 

你可能感兴趣的:(字符串)