从文件制作链表有什么问题

时间:2014-12-31 15:52:27

标签: c file file-io linked-list

我想从这个文件中创建一个链接列表:

asd
aids
iwill

这是制作链表并返回其头部的函数:

firstNames* insertOfFirstNameF(FILE* file){
    char name[15];
    firstNames* head,*newPtr,*temp;
    while((head=(firstNames*)(malloc(sizeof(firstNames))))==NULL);
    fgets(name,12,file);
    head->name=name;
    head->linkPtr=NULL;
    temp=head;
    while(fgets(name,12,file)){
        while((newPtr=(firstNames*)(malloc(sizeof(firstNames))))==NULL);
        newPtr->name=name;
        newPtr->linkPtr=NULL;
        temp->linkPtr=newPtr;
        temp=newPtr;
    }
    return head;
}

struct firstNames有两个字段,我在我的代码中使用了它们。

这是主要功能:

int main(){
    FILE* file;
    file=fopen("firstnames.txt","r");
    firstNames* head=insertOfFirstNameF(file);
    fclose(file);
}

我知道它返回了一个头,它的名字字段是" asd" (文件的第一个)但它的名字字段是" iwill"代替;

我的代码出了什么问题?

1 个答案:

答案 0 :(得分:2)

name是一个局部变量,在函数返回后它的内容将不再存在,我会建议快速修复

head->name=strdup(name);

newPtr->name=strdup(name);

您应该记住free列表中每个节点的name成员,以及不要投放 malloc in c