自己itoa函数,求改错,该如何解决

自己itoa函数,求改错
下面是我自己写的一个itoa函数,我用的是keil但我不知道怎样才能把数组p【】里的所有元素给一个uchar型指针变量(本人的想法不知道行不行),求好的方法,小弟已经黔驴技穷了,求指教!
char *itoa(int value,char *str,int redix)
{
uint j,k;
uchar *en;
uchar xdata p[30];
for(j=0;value!=0;j++)
{
p[j]=value%2;
value=value/2;

}
for(k=j-1;k>=0;j--)
{  
*en=p[k];
}
sprintf(sumsz,"%.30s",*en);
return sumsz;

这里的sumsz也是一个uchar型数组

------解决方案--------------------
char *itoa(int value,char *str,int redix)
{
typedef unsigned char uchar;
typedef unsigned int uint;
 int j,k;
 uchar *en=(uchar *)str;
 uchar p[30];
 for(j=0;value!=0;j++)
 {
 p[j]=value%2;
 value=value/2;
 }
 for(k=j-1;k>=0;j--)
 {
*en++=p[k];
 }

 return str;
}