需求有点不清晰,你要从文件里取什么东西出来?
我改了从txt取每一行的字符串出来,记录在你的链表,你参考一下
#include "stdafx.h"
#include "stdlib.h"
int main()
{
struct fac
{
//int data;
char data[256]; //不知道你要取什么数据,这里用个字符串数组代替
struct fac *next;
}*phead;
int i;
FILE *fp=fopen("d:\\text.txt","rb"); //一个有内容的txt文本,自己替换
struct fac *p;
struct fac *ptemp;
phead=(struct fac*)malloc(sizeof(struct fac));
phead->next=NULL;
ptemp=phead;
//fread(p,sizeof(struct fac),1,fp);
while(fgets( ptemp->data,256,fp )!=NULL)//改用fgets取一行的数据
{
printf("%s\n",ptemp->data);
p=(struct fac*)malloc(sizeof(struct fac));
ptemp->next=p;
ptemp = ptemp->next;
}
//后面还应该有个释放链表的操作,这里程序结束会回收,就不写了。
}
楼主有几点要注意:
1. 文件中只有数据是有用的,next指针是不能用的。所以,很多时候,文件中只保存了数据。
2. 楼主程序中的关键错误是,p=p->next; 这一句。这句之后,p将变为不可用。
学会调试程序,断点、单步执行,查看执行过程中变量的值。自己找原因。