簡體   English   中英

從C語言的指針char中刪除String

[英]Remove String from pointer pointer char in C

我試圖從指針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++;
    }
}

完整的代碼

跳過一個字符串是行不通的。 您需要跟蹤已讀和未讀的字符串。

這將刪除重復的條目

    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;
    }

如果要正確刪除重復的條目,則必須正確釋放字符串。 您應該更改初始化字符串的方式才能做到這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM