这个c语言程序怎么写?

编写函数Delete()在字符串中删除给定的某字符。例如:在"hello“中删掉” 1’结果为"heo”,
然后在主函数中,输入字符串和待删除的字符,再谓用函数Delete删除字符串中与该字符相同的字符,最后输
出删除字符后的字符串。
程序运行结果示例:
Input a string;
hello, my friend!
Input a character:

Results:heo, my friend!
输入格式:
输入字符串用 getsQ函数
输入单个字符用 getchar O函数
输出格式:
输入字符串的提示信息:“Input a string:Nn"
输入单个字符的提示信息:“Input a character:Nn"
输出格式:"Results:%s\n"

一个实现:


#include <stdio.h>

//获取字符串 
getsQ(char *str){
    gets(str);    
}

//获取字符 
getcharO(char * ch){
    
    *ch =getchar();
    
    
}
//删除函数 
Delete(char * str,char ch){
    

    int i=0,j=0;
    
    //循环判断到字符串结尾 
    while(str[i]!='\0'){
        //如果字符串当前字符不是要删除的字符就把这个字符依次存入原字符串的前面位置 
        if(str[i]!=ch){
            str[j]=str[i];
            j++;  //指向下一个存储非删除字符的位置 
        }
        i++;  //指向下一个要判断的字符串位置 
    }
    //结尾加字符串结束空字符 
    str[j]='\0';
    
}

int main(void){
    
    char str[20];
    char ch ;
    char results[20];
    
    printf("Input a string:\n");
    getsQ(str);
    printf("Input a character:\n");
    getcharO(&ch);
    Delete(str,ch);
    printf("Results:%s\n",str);
    
    return 0;
}

供参考:

#include <stdio.h>
void Delete(char* s, char c)
{
    char* p = s;
    if (*s == NULL || s == NULL)
        return;
    while (*p)
    {
        if (*p != c)
            *s++ = *p++;
        else
            p++;
    }
    *s = '\0';
}
void getsQ(char* s)
{
    gets(s);
}
void getcharO(char* c)
{
    *c = getchar();
}
int main()
{
    char str[256], ch;
    printf("Input a string:");
    getsQ(str);
    printf("Input a character:");
    getcharO(&ch);
    Delete(str, ch);
    printf("Results:%s\n", str);
    return 0;
}