[英]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.