用指针编写删除字符串中重复字符的函数

用指针编写删除字符串中重复字符的函数

用指针编写删除字符串中重复字符的函数
void del(char *p)
{
char *q,*r;
for(q=p;(*q)!='\老友誉0'告碰;q++)
{
for(r=p;r!=q;r++)
{
if((*q)==(*r))
break;
}
if(r!=q)
{
for(r=q;(*r)!='\侍段0';r++)
{
(*r)=*(r+1);
}
q--;
}
}

}

#include
#include
void delete1(char s[],char t[])
{
int i,j,k;
int flag=0;

//野卜一:代码缺陷
//增加判断。应该
if(!s || !t)
{
return;
}
if(strlen(s) < strlen(t))
{
return;
}

for( i=j=0; s[i]!='\0';i++)
{
for( k=0; t[k]!='码哪\0';k++)
{
if(s[i+k]==t[k]) flag=1;
else
{
flag=0;
break;
}
}
//二,逻辑错误
/*if(flag)
{
s[j++]=s[i+k];
i=i+k+1;
} */
//改成
if(flag)
{
strcpy(&s[i], &s[i + k]);
}

//if(!flag) s[j++]=s[i];
if(!flag) continue;
}
//s[j]='\0';
printf("%s\n",s);
}
main()
{
char str1[255],str2[255];
printf("please input the article:\n");
gets(str1);
printf("颂模穗please input the words you want to delete:\n");
gets(str2);
delete1(str1,str2);
}
← 上一篇: 下一篇: →