从C中的指针指针char中删除String

时间:2016-07-09 17:44:08

标签: c pointers

我试图从指针指针char(char **str)中删除一个字符串,我的函数删除字符串并复制剩余的字符串。

void    remove_dup(char **split, char *name)
{
    char **sp;
    sp = split;
    while (*sp != NULL)
    {
        if (strncmp(*sp, name, strlen(name)) == 0)
        {
            *sp = *(sp + 1);
            sp++;
        }
        else
            sp++;
    }
}

complete code

1 个答案:

答案 0 :(得分:3)

跳过一个字符串不会起作用。您需要跟踪已读和未读的字符串。

这将删除重复的条目

    void    remove_dup(char **split, char *name)
    {
        char **read,**write;
        read=write=split;
        char count=0;
        while (*read!=NULL){
            if (strncmp(*read, name, strlen(name)) == 0){
                if(count==0){
                    *(write++)=*(read++);   
                    count=1;
                }
                else{
                    //free string
                    read++;
                    continue;
                }
            }
            else
                *(write++)=*(read++);   
        }
        *write=0;
    }

如果要正确删除重复的条目,则必须正确释放字符串。您应该更改初始化字符串的方式,以便能够做到这一点。