我试图从指针指针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++;
}
}
答案 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;
}
如果要正确删除重复的条目,则必须正确释放字符串。您应该更改初始化字符串的方式,以便能够做到这一点。