c语言函数编程实现如下功能

编写一个函数实现如下功能
给了一个字符串,把前面的*移到后面,中间的*不动
例如给了****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是给你的字符串,谢谢

4个回答

我知道了,把第一个*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值一样,但是地址不一样

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐