*q= t;
q++;
p++;
q++操作完之后,已经跑到ABCDEFG后面去了,你当然输出不了你想要的了。
而且
printf("%s\n",q);
直接输出了整个数组q余下的部分,你又没有初始化q,所以输出就是那个烫烫。。。
你用我下面这段代码试下,应该可以实现你要的功能。
void func3(char* str)
{
int nLen = strlen(str);
char* p = new char[nLen + 1];
char* pTmp = p;
char* strTmp = str;
while (*strTmp)
{
if ('*' != *strTmp)
{
*pTmp++ = *strTmp;
}
strTmp++;
}
*pTmp = '\0';
strTmp = str;
pTmp = p;
while (*pTmp)
{
*strTmp++ = *pTmp++;
}
*strTmp = '\0';
delete[] p;
}main()
{
char p[]="****A*BC*DEF*G*******";
fun3(p);
printf("%s\n",p);
}
朋友,请【采纳答案】,您的采纳是我答题的动力,如果没有明白,请追问。谢谢。