Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在c语言中删除链表中的节点_C_String_Linked List_Keyboard - Fatal编程技术网

在c语言中删除链表中的节点

在c语言中删除链表中的节点,c,string,linked-list,keyboard,C,String,Linked List,Keyboard,目前我的代码有一个小问题。 我必须删除喜欢列表的某些节点,该列表包含用户通过键盘输入的相同字符串。我使用这个家伙代码作为模板: 我遇到的问题是,由于某种原因,te方法正在对列表中前一个节点的某些信息进行勘误。 这是我的密码: void wificollector_delete_net(struct access_point *l) { char* dESSID; int i=0; dESSID=(char*)malloc(sizeof(char)*10); st

目前我的代码有一个小问题。 我必须删除喜欢列表的某些节点,该列表包含用户通过键盘输入的相同字符串。我使用这个家伙代码作为模板: 我遇到的问题是,由于某种原因,te方法正在对列表中前一个节点的某些信息进行勘误。 这是我的密码:

void  wificollector_delete_net(struct access_point *l)
{
    char* dESSID;
    int i=0;
    dESSID=(char*)malloc(sizeof(char)*10);
    struct access_point *delete;
    struct access_point *prev;
    delete=(struct access_point *)malloc(sizeof(struct access_point)*50);
    prev=(struct access_point *)malloc(sizeof(struct access_point)*50);
    printf("Indicate the ESSID (between “”):\n");
    scanf(" %s", dESSID);
    printf("%s\n",dESSID);
    prev=NULL;
    delete=l->next;
    while(delete!=NULL && strcmp(delete->ESSID,dESSID)==0){
        prev=delete;
        delete=delete->next;
        free(prev->MAC);
        free(prev->ESSID);
        free(prev->modo);
        free(prev->cifrado);
        free(prev);
        i++;
    }

    while(delete!=NULL){
        if(strcmp(delete->ESSID,dESSID)==0){
            if(prev!=NULL){
                prev->next=delete->next;
            }
            free(prev->MAC);
            free(prev->ESSID);
            free(prev->modo);
            free(prev->cifrado);
            free(prev);
            delete=prev->next;
            i++;
        }else{
            prev=delete;
            delete=delete->next;
        }
    }
}

谢谢你的帮助。

那代码漏洞百出。C不是Java。您不必
malloc
一切。和
删除->=NULL甚至不是有效的C代码。为了让事情变得更清楚,我首先将要从这个函数中删除的essid的集合移出,并将其作为参数传入。让它只做一件事:搜索和销毁。非常感谢你的帮助,如果你看到非常新的错误,很抱歉,我已经使用c不到4个月了,我几乎是一个婴儿编程。