C 十进制转字符串的函数
时间: 2024-01-06 14:07:06 浏览: 54
以下是一个将十进制整数转换为字符串的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* int_to_string(int n) {
int sign = n < 0 ? -1 : 1; // 判断正负号
n = abs(n); // 取绝对值
// 计算字符串长度
int len = 1;
int tmp = n;
while (tmp /= 10) {
len++;
}
// 分配字符串内存
char* str = malloc(len + (sign < 0 ? 1 : 0) + 1);
if (str == NULL) {
return NULL; // 内存分配失败
}
// 转换数字为字符串
sprintf(str, "%d", n);
// 添加正负号
if (sign < 0) {
memmove(str + 1, str, len + 1);
str[0] = '-';
}
return str;
}
int main() {
int n = -123456;
char* str = int_to_string(n);
printf("%s\n", str);
free(str);
return 0;
}
```
该函数使用 sprintf() 函数将整数转换为字符串,如果需要添加负号,则使用 memmove() 函数将字符串整体向右移动一位,然后在字符串首部添加一个负号。函数返回值为 char* 类型,需要在使用后手动释放内存。