为啥输不出来结果来,该如何处理

为啥输不出来结果来
这个小程序就是去除连续相同字符   就是输不出结果来
#include   <iostream.h>
char   *   delsame(char   *str)
{
int   k=0;char   temp[10];
for(char   *p=str;p!= '\0 ';p++)
  {
  if(k==0)   temp[k++]=*p;
  else   if(temp[k-1]!=*p)   temp[k++]=*p;
  }
  temp[k]= '\0 ';
for(int   i=0;i <=k;i++)
str[i]=temp[i];
return   str;
}
void   main()
{      
char   a[10]= "abcddef ";
cout < <delsame(a);
}

------解决方案--------------------
for(char *p=str;p!= '\0 ';p++)
==============================
这里死循环了。// for(char *p=str;*p!= '\0 ';p++)

还有temp怎么能固定大小呢,很容易就越界了。