itoa函数
功 能: 把一整数转换为十进制字符串
用 法: void my_itoa(int n, char s[])
思路:
整数转化为十进制字符串,首先,需要整除(n/=10)求余(n%10),再次我们考虑到正负问题,对于负数我们可以先求它的相反数的字符串后面再加上‘-’。
最后进行一次翻转,所有数字变为正序。
实现:
//编写itoa函数,该函数为itoi函数的逆函数
#include<stdio.h>
#include<windows.h>
void my_itoa(int n, char s[]);
void reverse(char s[]);
int main()
{
int m = -123;
char s[20] = { '0' };
my_itoa(m, s);
printf("%d\n", m);
puts(s);
system("pause");
return 0;
}
void my_itoa(int n, char s[])
{
int i = 0, sign;
if ((sign = n )< 0)
{
n = -n;
}
i = 0;
do
{
s[i++] = n % 10 + '0';
} while ((n /=10)>0);
if (sign < 0)
{
s[i++] = '-';
}
s[i] = '\0';
reverse(s);
}
void reverse(char s[])
{
int i,j;
int n = strlen(s)-1;
int temp = 0;
for (i = 0, j = n; i <j; i++, j--)
{
temp = s[i];
s[i] = s[j];
s[j] = temp;
}
}
警告:
1.if ((sign = n )< 0),对sign进行赋值一定要带上(),比较运算符优先于赋值运算。
2.进行循环判断时,不应是while(n/10),而应该是while ((n /=10)>0);