函數 char *digitToAlpha (int val, char *buf, unsigned radix) 的功能是將數值轉換為字符串。
參數:第一個是要轉化的整數,第二個是轉化後的字符串,第三個是要轉化整數的基數,就是說如果基數是10,就可以直接轉化,如果不是10,是其他值(2-36之間),則先把該整數轉化為該基數的數後,再轉化為字符串。
#include <stdio.h> #include <stdlib.h> 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; }