C语言编写函数字符串删除对应的字符(两种方法)

C语言编写函数字符串删除对应的字符(两种方法)

思路

  • 看了网上很多博客我发现当出现指定字符重复出现时,不会全部删除
  • 这是一种笨方法,
  • 有好的方法请在下方回复谢谢

代码实现

方法一

//定义删除字符函数
void del(char *p,char c)
{
    char *q,*t;
    while(*p)
    {
        if(*p==c)        //当p指定的字符与删除的字符一样时,
        {        //用t指针指向当前字符,将后面的字符统一向前覆盖
            for(t=p;*(t+1)!='\0';t++)    //也就是*t=*(t+1)
                *t=*(t+1);            //*(t+1)=='\0'时说明
            *t='\0';          //*t已经是字符串的最后一个字符
        }       //切记,一定要最后加上'\0',因为是字符串
        p++;
    }
}
int main()
{
   int i;
   char a[100];
   gets(a);
   char b;
   scanf("%c",&b);
   for(i=0;i<80;i++)    //当调用del函数时并不能删除像dddd这种情况,所以加了个循环,但是很浪费时间和内存
   del(a,b);//数组作为函数实参时,数组名表示的是数组首元素的地址
   puts(a);
}

方法一运行结果

在这里插入图片描述

方法二

思路:

  • 遍历判断是否一样,如果和删除的字符不一样,则存到另一个字符数组
  • 可以使用strcmp函数改变原数组的值

代码实现

int main()
{
    char a[80],b[80],c;
    int i,j;
    gets(a);
    c=getchar();
    for(i=0,j=0;i<strlen(a);i++)
        if(a[i]!=c){
             b[j]=a[i];
             j++;
        }
        b[j]='\0';
    strcpy(a,b);
    puts(a);
}

方法二运行结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_20185737/article/details/104158613