函数 char *digitToAlpha (int val, char *buf, unsigned radix) 的功能是将数值转换为字符串。
参数:第一个是要转化的整数,第二个是转化后的字符串,第三个是要转化整数的基数,就是说如果基数是10,就可以直接转化,如果不是10,是其他值(2-36之间),则先把该整数转化为该基数的数后,再转化为字符串。
#include
#include
char *digitToAlpha (int val, char *buf, unsigned radix);
int main(int argc, char *argv[])
{
int iNum = 55;
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;
*p =*firstdig;
*firstdig= temp; /* swap *p and *firstdig */
--p;
++firstdig; /* advance to next two digits */
} while (firstdig < p); /* repeat until halfway */
return buf;
}