/* 实现思路 :我们要知道数字和字符串差异,比如数字1和字符串'1',
它们在ascll码的值相差48,也就是相差字符'0',因为字符'0'的asscll码
值是48,所以我们只需要把我们输入的数字的每一位加48得到,它所对应的字符
那么,咋能得到我们输入的数字的每一位呢,比如说1234,我们采用的是%10,
得到余数4,再/10得到123,依次下去会得到4321,这和我们的输入不一样,这个
时候只需要交换一下顺序就行了。
*/
#include <stdio.h>
/* 实现思路 :我们要知道数字和字符串差异,比如数字1和字符串'1',
它们在ascll码的值相差48,也就是相差字符'0',因为字符'0'的asscll码
值是48,所以我们只需要把我们输入的数字的每一位加48得到,它所对应的字符
那么,咋能得到我们输入的数字的每一位呢,比如说1234,我们采用的是%10,
得到余数4,再/10得到123,依次下去会得到4321,这和我们的输入不一样,这个
时候只需要交换一下顺序就行了。
*/
char *itoa(char *p, int n);
int main(int argc, char *argv[])
{
int n;
char s[50], * r;
printf("input:");
scanf("%d", &n);
r = itoa(s, n);
puts(r);
puts(s);
return 0;
}
char *itoa(char *p, int n)
{
int r, i = 0, j;
//static char p[50];
//为来得到我们的每一位的数字,好加48转字符串
while (n) {
r = n % 10;
n /= 10;
p[i] = r + '0';
i++;
}
p[i] = '\0';
//下面主要就是交换一下位置,4321,变成1234
j = i-1;
i = 0;
while (i < j) {
r = p[i];
p[i] = p[j];
p[j] = r;
i++;
j--;
}
return p;
}