itoa()函数
函数原型:char *itoa( int value, char *string,int radix);
value:欲转换的数据。string:目标字符串的地址。
radix:转换后的进制数,可以是10进制、16进制等,范围必须在 2-36。
功能:将整数value 转换成字符串存入string 指向的内存空间 ,radix 为转换时所用基数(保存到字符串中的数据的进制基数)。
返回值:函数返回一个指向 str,无错误返回。
在此处我将模拟实现radix为10的情况,即十进制的转换;
先说以下基本思想:对与一个整数,必须先得到每一位的数值才能进行字符加入;先从起获得每一位直接放进string数组中,之后在逆转数组即可;
/模拟实现itoa
char * MyReserve(char *str)
{
int begin = 0;
int end = strlen(str) - 1;
while (begin <= end)
{
//交换
char ch = str[begin];
str[begin] = str[end];
str[end] = ch;
begin++;
end--;
}
return str;
}
char * MyItoa(int value,char *str) //value需要转换的值,str保存转换后的字符串,radix以何种进制转换(2,8.10,16)
{
int flag = 1;
if (value < 0)
{
flag = -1;
}
value *= flag;
int i = 0;
while (value != 0)
{
str[i] = '0' + (value % 10);
value /= 10;
i++;
str[i] = '\0';
}
if (flag == -1)
{
str[i] = '-';
str[i + 1] = '\0';
}
return MyReserve(str);
}
int main()
{
int num = -1234;
int value = 123;
char str[100];
char *dst;
dst = MyItoa(num, str);
printf("%s\n",dst);
printf("%s\n", MyItoa(value, str));
system("pause");
return 0;
}
运行截图: