键盘输入一个字符串保存到char类型的数组中,然后输入一个字符,把这个字符从字符串里面全部删除

代码1:
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
char p1[20];
char p2[20];
int main(void)
{
    char *p;
    char *o;
    char delete;
    int len;
    p=p1;
    o=p2;
   
    scanf("%s",p1);
    getchar();
    scanf("%c",&delete);
    while(*p!='\0')
    {
        printf("%c",*p++);
    }
    printf("\n");
    p=p1;
    
    while(*p!='\0')
    {
      if(delete!=*p)
      {
        *o=*p;
        *o++;
      }
      *p++;
      
    }
    memset(p1, 0, sizeof p1);
    p=p1;
    o=p2;
    while(*o!='\0')
    {

      *p=*o;
      *o++;
      *p++;
    }
    p=p1;
    while(*p!='\0')
    {
        printf("%c",*p++);
    }
}

代码2:
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include <malloc.h>
int main(void)
{
    char *p=(char *)malloc(sizeof(char)*10);
    char delete;
    int log=0;
    int location;
    char p1[20]={0};
    p=p1;
    printf("请输入任意的字符串\n");
    scanf("%s",p1);
    getchar();
    printf("请输入要删除的字符\n");
    scanf("%c",&delete);
    
     p=p1;
    while(*p!='\0')
    {
     
      if(*p==delete)
       { 
        //
        location=log;
        while(*p!='\0')
        {
          *p=*(p+1);
          *p++;
        }
        p=p1;
        p=p+location;
        log=location-1;
       }
       *p++;
      log++;
    }
      printf("%s",p1);
   return 0;
}