我想从这个文件中创建一个链接列表:
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"代替;
我的代码出了什么问题?
答案 0 :(得分:2)
name
是一个局部变量,在函数返回后它的内容将不再存在,我会建议快速修复
head->name=strdup(name);
和
newPtr->name=strdup(name);
您应该记住free
列表中每个节点的name
成员,以及不要投放 malloc
in c 强>