您的位置:首页 > 编程语言 > C语言/C++

C语言将数字转化为字符串

2011-09-14 00:00 344 查看
函数 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; 
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: