VC6.0一个关于指针的问题求解

问题是:编写函数fun3(char*p),将以指针p传递进来的某字符串中的所有*删除(不得使用C语言提供的字符串函数)。例如,若原字符串为****A*BC*DEF*G**... 问题是:编写函数fun3(char *p),将以指针p传递进来的某字符串中的所有*删除(不得使用C语言提供的字符串函数)。例如,若原字符串为****A*BC*DEF*G*******,则处理后的字符串应当是:ABCDEFG。
下面是我写的函数和主函数不知道哪儿出问题了,error 和 warning都找不到//反正是越界了吧,这一节没学好还望大神解答:
#include<stdio.h>

void fun3(char *p,char *q)
{
int i,j=0;
for(i=0;i<21;i++)
{
if(p[i]='*')
{
continue;
}
else
{
int t;
t= *p;
*q= t;
q++;
p++;
}
}

}

main()
{
char p[]="****A*BC*DEF*G*******";
char q[100];
fun3(p,q);
printf("%s\n",q);
}
展开
 我来答
百度网友bb29ad2
2016-06-02 · TA获得超过2271个赞
知道小有建树答主
回答量:890
采纳率:33%
帮助的人:220万
展开全部

*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);
}

朋友,请【采纳答案】,您的采纳是我答题的动力,如果没有明白,请追问。谢谢。

更多追问追答
追问

有错误的呀、

追答

哪你把fun3换成下面这个吧

void func3(char* str)
{
    int nLen = strlen(str);
    char p[1024] = {0};
    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';
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式