指针实现删去字符串中的特定字符
#include <stdio.h>
void delete (char *ch, char c)
{
int i = 1;
char *p1 = ch; //p1用于覆盖值的操作。
char *p = ch; //p用于移位判断。
while (*p != 0) //当*p为/0时结束函数。
{
if (*p == c) //判断是否为那个要被删去的值。
{
for (p1 = p, i = 1; *p1 != 0; p1++) //令操作指针从当前的那个要被删去的值开始,判断它的下一位是不是也要被删去,然后位移到不用被删去的位置,
//将此位置上的值覆盖给当前位置。每出现一个需要被删去的值,操作指针都需要从后面找一个值来补到前面。
{
for (; 1; i++)//为了避免出现字符连续出现 例如aaaaaabbcc删去a失败的情况,引入一个i进行判断,当操作指针位移到上面的值不是a的时候将这个
//值赋给当前位置。这样的话,第二个a就需要i+2位上的值来覆盖。
{
if (*(p1 + i) != c)
{
*p1 = *(p1 + i);//完成覆盖删去值后,跳出循环。
break;
}
}
}
}
p++; //当待删除值被覆盖后,用于移位判断的p继续向后移动。
}
}
int main()
{
char ch[100] = {0};
gets(ch);
char c;
scanf("%c", &c);
delete (ch, c);
puts(ch);
return 0;
}
新手小白,如有错误,望大家指正