- 论坛徽章:
- 0
|
在unix环境的c语言中,怎么把一个数字转成字符
- #define BASE (10)
- /*
- * 函数名称: convert_str_fromint(int i, char *s)
- * 入口参数: i为要输入到字符串中的数字,s为储存数字的字符串
- * 出口参数: 存储好数字的字符串s
- * 基本思想: 数字的进制转换
- */
- char* convert_str_fromint(int i, char *s)
- {
- int m, n, sign;
- /* 首先根据i的正负来设置sign参数以及i */
- if (i < 0) {
- sign = 0;
- i = -i;
- } else
- sign = 1;
-
- /* 得到以BASE为底数时i的位数n */
- for (n = 1, m = i; m /= BASE; n++)
- ;
- /* 不要忘了字符串最后的'\0'结束符 */
- if (sign)
- s[n--] = '\0';
- else
- s[n + 1] = '\0';
-
- /* 逐位读入以BASE为底数时各个位上的数 */
- do
- s[n--] = i % BASE + '0';
- while (i /= BASE);
- if (!sign)
- s[0] = '-';
-
- return s;
- }
复制代码
说明:定义BASE宏是为了可拓展性,可以把BASE设置为其他的底数,但是基本的算法(即数制转换的思想)是不变的 |
|