/* 参数:
* arr: 接收一个数组或者已经分配内存的char指针
*
* arr_size: arr所指向的地址所分配的长度,长度不够会导致截断
*
* num: 需要转换的数字,范围通常是-2147483648~2147483647, 详情参见<litmits.h>的INT_MAX
*
* 返回值:
* 成功执行,则返回填充的字节数, 不包括'\0', 如果num是一个负数,那么包括负号'-'
*
* 执行失败,则返回一个负数,如下:
* -1 : arr_size传入错误
*
* 欢迎反馈BUG或者提建议
*
*/
int int_to_char(char *arr, int arr_size, int num)
{
if(arr_size <= 0)
return -1;
int i=0;
/*待填充字符的下标*/
int symbol = 1;
int base = 1;
if(num < 0){
*(arr+0)='-';
i++;
symbol = -1;
}
while(num/base >= 10 || num / base <= -10)
base *= 10;
/* 计算num的基数base, 例如:
* num = 0 , base = 1;
* num = 112, base = 100;
* num = -3400, base = 1000;
*/
for(; i < arr_size - 1 && base != 0; i++){
*(arr+i) = (num / base)*symbol + 48;
num %= base;
base /= 10;
}
*(arr+i) = '\0';
return i;
}