编写一个函数实现如下功能
给了一个字符串,把前面的*移到后面,中间的*不动
例如给了****a*c*def**则输出为a*c*def******
我写出来了,就是不知道哪里出错了,求解答void fun(char a)
{
char *p;
int i,j,n=0;
p=a;
while(*p!='')
{n++;p++;}
while(*p!='\0')
{*a=*p;p++;a++;}
for(i=0;i<n;i++)
{*a='*';a++;}
*a='\0';
}
这里的*a是给你的字符串,谢谢
我知道了,把第一个*p!='*'改成等于就对了
a最终指向了数组的最后一位,你没有保留数组的开头的地址。
int main()
{
char *pStr = "****a*c*def**";
int nLen = strlen(pStr) + 1;
char *P = new char[nLen];
int nCount = 0,nSize = 0;
while(*pStr != '\0')
{
if (*pStr == '*')
{
nCount ++;
}
else
{
break;
}
*pStr ++;
}
strcpy(P,pStr);
for (int i = 0;i < nCount;i ++)
{
P[nLen - nCount - 1 + i] = '*';
}
if (*P)
{
delete P;
}
return 0;
}
你传入的是字符不是地址,函数里面的a是拷贝出来的,和你传入的a值一样,但是地址不一样