功 能:把一整数转换为字符串
用 法:char *itoa(int value, char *string, int radix); 详细解释:itoa是英文integer to array(将int整型数转化为一个字符串,并将值保存在数组string中)的缩写. 参数: value: 待转化的整数。 radix: 是基数的意思,即先将value转化为radix进制的数,范围介于2-36,比如10表示10进制。 * string: 保存转换后得到的字符串。 返回值: char * : 指向生成的字符串, 同*string。 备注:该函数的头文件是"stdlib.h" |
#include <stdio.h>
#include <stdlib.h>
char *my_itoa(int num,char *str,int radix)
{
const char table[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char *ptr = str;
char negative = 0;
if(num == 0)
{ //num=0
*ptr++='0';
*ptr='\0'; // don`t forget the end of the string is '\0'!!!!!!!!!
return str;
}
if(num<0)
{ //if num is negative ,the add '-'and change num to positive
*ptr++='-';
num*=-1;
negative = 1;
}
while(num)
{
*ptr++ = table[num%radix];
num/=radix;
}
*ptr = '\0'; //if num is negative ,the add '-'and change num to positive
// in the below, we have to converse the string
char *start = (negative ? str+1 : str); //now start points the head of the string
ptr--; //now prt points the end of the string
while(start<ptr)
{
char temp = *start;
*start = *ptr;
*ptr = temp;
start++;
ptr--;
}
return str;
}
int main()
{
int i=333456;
char buffer[20];
my_itoa(i,buffer,16);
printf("Hello world! %s\n",buffer);
return 0;
}