在准备面试的过程中,发现了一条道常见题,itoa atoi,下面就给出这道题的解决方法
首先
对于itoa,函数原型
#include <iostream>
using namespace std;
void myitoa(int num,char * str,int radix)
{
char index[]="0123456789ABCDEFG";
int i=0,k=0;
int unnum;
if(num<0&&radix==10)
{
str[i++]='-';
unnum=(unsigned)-num;
}
else
unnum=num;
int unradix=(unsigned)radix;
printf("num=%d\n",unnum);
while(unnum>0)
{
str[i++]=index[unnum%unradix];
unnum/=radix;
}
str[i]='\0';
printf("%s\n",str);
if(str[0]=='-')
k=1;
else
k=0;
//index 指的是需要交换的次数
for(int index=0;index<=(i-k-1)/2;index++)
{
char tmp=str[index+k];
str[index+k]=str[i-index-1];
str[i-index-1]=tmp;
}
printf("%s\n",str);
}
int main()
{
int a=0xA1234;
char str[10]={0};
myitoa(a,str,16);
cout << "finish";
getchar();
}