C:分段错误,双向链表

时间:2014-03-15 17:13:51

标签: c pointers segmentation-fault doubly-linked-list

我对C很新,我有一个问题。 每次运行程序时我都会遇到“分段故障” 我不知道为什么。 我很确定我知道问题来自, 所以我在代码中添加了这一行。 我希望你能帮助我。 提前谢谢。

struct node {
struct node *next;
struct node *previous;
char data[255];
};

void insert(char *value, struct node **anf, struct node **end)
{
    struct node *var,*temp;
    var=(struct node *)malloc(sizeof(struct node));
    strcpy(var->data, value);
    if(*anf==NULL)
    {
        *anf=var;
        (*anf)->previous=NULL;
        (*anf)->next=NULL;
        *end=*anf;
    }
    else
    {
        temp=var;
        temp->next=NULL;
        temp->previous=*end;
        (*end)->next=temp;
        *end=temp;
    }
}

int einlesen(char *quelldatei, struct node **anf, struct node **end)
{
    FILE *datei;
    if ((datei=fopen(quelldatei,"r")) == NULL)
    {
        return 1;
    }
    else
    {
        char string[255];
        while(fgets (string, 255, datei)!=NULL)
        {
             if (string[strlen(string)-1]=='\n')
             {
             char newstring[strlen(string)-1];
             int i;
                 for(i = 0; i < sizeof(newstring); i++)
             {
                     newstring[i]=string[i];
         }
             newstring[sizeof(newstring)]= '\0';
                 insert(newstring, anf, end);        //NOT WORKING
             }
             else
             {
                 insert(string, anf, end);               //NOT WORKING
             }
         }    
        fclose(datei);
        return 0;
    }
}

int main(int argc, char * argv[])
{
    struct node *anf,*end;
    int a = einlese(##FILENAME##,&anf,&end); //##FILENAME## stands for a local file
    return 0;
}

0 个答案:

没有答案