#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
* (正负)整数转字符串
* */
void my_itoa(int n,char* out_put)
{
/*
*先取绝对值
* */
int tmp = n < 0 ? -n : n;
char buf[1024] = {0};
int i = 0;
while(tmp)
{
/*
* 加'0'是把数字转换成字符
* */
buf[i++] = (tmp % 10) + '0';
/*
* 逐个取整数的每一位
* */
tmp = tmp / 10;
}
/*
* 末位加字符串结束标志
* */
buf[i] = '\0';
/*
*负数的话多留一位来填 '-' 负号
* */
int len = n < 0 ? ++i : i;
int j;
/*
* 因为buf中的顺序是倒的,所以把buf中的填到out_put中去
* 注意:整数和负数的区别,负数多一个符号位,所以多减去1
* */
for(j = 1; j <= len; j++)
out_put[j] = n < 0 ? buf[len - j - 1] : buf[len - j];
/*
* 最后填符号位
* */
out_put[0] = n < 0 ? '-' : '+';
/*
* 末位加字符串结束标志
* */
out_put[j] = '\0';
}
int main()
{
int n;
printf("Enter a integer:\n");
scanf("%d",&n);
char* tmp = (char*)malloc(1024);
memset(tmp,0,1024);
my_itoa(n,tmp);
printf("%s\n",tmp);
return 0;
}