代碼
#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;
*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