C 语言整数转字符串函数:高效实现和内存管理
#include <stdio.h>
#include <stdlib.h>
char* int_to_str(int num) {
char* str = (char*)malloc(sizeof(char) * 12); // 最大长度为 11 位加上符号位
int i = 0, j = 0;
if (num < 0) {
str[i++] = '-';
num = -num;
}
do {
str[i++] = num % 10 + '0';
num /= 10;
} while (num != 0);
str[i] = '\0';
// 反转字符串
if (str[0] == '-') j = 1;
for (; j < i / 2; j++) {
char tmp = str[j];
str[j] = str[i - j - 1];
str[i - j - 1] = tmp;
}
return str;
}
int main() {
int num = -12345;
char* str = int_to_str(num);
printf("%d 转换为字符串为:%s\n", num, str);
free(str); // 释放内存
return 0;
}
本代码展示了一个 C 语言函数 int_to_str,用于将整数转换为字符串。函数逻辑如下:
- 内存分配: 使用
malloc为字符串分配内存空间,考虑到最大长度为 11 位整数加上符号位,因此分配 12 字节空间。 - 负数处理: 如果输入的整数为负数,则在字符串的开头添加 '-' 符号。
- 数字转换: 使用
do...while循环逐位将整数转换为字符,并将字符存储在字符串中。 - 字符串反转: 由于数字转换是从低位到高位进行的,因此需要将字符串反转,以获得正确的顺序。
- 内存释放: 使用
free释放动态分配的内存,避免内存泄漏。
该函数提供了高效的整数转换功能,同时注意了内存管理,确保代码的健壮性。在实际应用中,可以通过修改函数参数和返回值类型,以适应不同的应用场景。
原文地址: https://www.cveoy.top/t/topic/nHZ2 著作权归作者所有。请勿转载和采集!