晃慌黄 2021-06-22 21:12 采纳率: 95%
浏览 35
已采纳

字符串数组问题,请教一下

#include <stdio.h>
int main()
{
    char s[80],ch;
    gets(s);
    scanf("%c",&ch);
    del(s,ch);
    puts(s);
}
void del(char s[],char ch)
{
    int i,j,len;
    len=strlen(s);
    for(i=0;i<len;i++)
        if(ch==s[i])
        for(j=i;j<len;j++)
            s[j]=s[j+1];
}

 

这段代码的作用是删除字符串中指定字符,但是我运行的时候发现如果要删除的字符是两个连着的就只能删除一个

比如aabbcaac,输入a删除后,出来的不是bbcc而是abbcac

想问一下为什么,怎么改。谢谢大佬

  • 写回答

4条回答 默认 最新

  • 浪客 2021-06-22 21:26
    关注
    void del(char s[],char ch)
    {
        int i,j,len;
        len=strlen(s);
        for(i=0;i<len;i++)
            if(ch==s[i])
            {
                for(j=i;j<len;j++)
                    s[j]=s[j+1];
                i--;    // 删除了位置i的元素,i需要-1重新检测该位置的元素。
            }
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?