要求定义和调用函数delchar(s,c),该函数的功能是将字符串s中出现的所有c字符删除。【在线等,急求!】

2024-11-07 08:41:48
推荐回答(3个)
回答(1):

#include 
#include 
void delchar(char *s,char c);
int main()
{
    char s[100],c,*p=s;
    printf("输入一个字符串(小于100个字符):");
    scanf("%s",s);
    getchar();
    printf("输入要删除的字符:");
    scanf("%c",&c);
    delchar(p,c);
    printf("%s",s);
    return 0;
}
void delchar(char *s,char c)
{
    int i,j=0,len=strlen(s);
    char sSave[len];
    for(i=0;i    {
        if(s[i]!=c)
        {
            sSave[j++]=s[i];
        }
    }
    sSave[j]=0;
    memset(s,0,len);
    for(i=0;i        s[i]=sSave[i];
}

回答(2):

#include 
#define N 80
int main(void) 

    char c; 
    char str[N]; 
    void delchar(char *str, char c); 
    gets(str);//
    scanf("%c", &c); 
    getchar(); 
    delchar(str, c); //
    puts(str); 
    return 0;
}
void delchar(char *str, char c) 

    int i, j; 
    i = j = 0; 
    while(str[i] != '\0'){ 
        if(str[i] != c){//
            str[j] = str[i]; 
            j++; 
        } 
        i++; 
    } 
    str[j] = '\0'; //
}

看带//的行。 是修改过的。 

回答(3):

gets(str[N]);

这里出错
gets(str);

现在都没怎么见过这种写法了,反正我这边编译通不过提示
test.C:(.text+0x79): warning: the `gets' function is dangerous and should not be used.

子函数写的莫名其妙,能达到目的才怪。现在实现的效果是,如果str里有n个c代表的字符,那么会把str设置为n个c代表的字符,str(n)='0',而且可能越界,当str全是c代表的字符时。没有找到的话,就直接把原来字符串第一个字符置'0‘。
编译倒没有编译问题。