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);
} 展开
下面是我写的函数和主函数不知道哪儿出问题了,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);
} 展开
1个回答
展开全部
*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';
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询