(不知如何修正,求指点)一个用C语言实现将TXT文件数据加载到链表的程序

爸我真没去网吧 2014-01-19 06:24:55


可以将数据写入data中,转化成链表失败,显示为空,自己找出来一些问题,用红色标注了,哪位大侠帮小弟分析下!


*
* list.h
*
* Created on: 2014-1-18
* Author: Administrator
*/

#ifndef LIST_H_
#define LIST_H_

typedef struct stu
{
char name[10];

}Ltem;
typedef struct node *pnode;/*定义节点的指针*/
typedef struct node
{
Ltem item;
struct node *next;
}node;

typedef pnode position;
typedef pnode list;


list makeempty(list L);
//功能:生成空链表

void display(list L);
//打印链表

#endif /* LIST_H_ */



void display(list L)
{
if(L==NULL)
{
return ;
}
list p=L;
p=p->next;
while(p!=NULL)
{
printf("debug2");//此处也没有打印,P直接为NULL;
printf("%s",p->item.name);
p=p->next;
}

}

list filetolist(FILE* fp,list L)
{

list temp;
Ltem a;
while(fread(&a,sizeof(a),1,fp)>0)
{

temp=(list)malloc(sizeof(node));
temp->item=a;
temp->next=L->next;
L->next=temp;
printf("debug1");//此处未打印出来,估计是fread的问题,但是不知道如何修改!
}
return L;
}



#include<stdio.h>
#include<stdlib.h>
#include"list.h"

int main()
{
FILE* fp=NULL;
list L=NULL;
L=makeempty(L);
Ltem b[5] = {{"aa"},{"bb"},{"cc"},{"dd"},{"ee"}};

if((fp = fopen("data.txt", "wb"))==NULL)
{
printf("file open error");
}

fwrite(b, sizeof(Ltem), 5, fp);
fseek(fp, 0, SEEK_SET);
L=filetolist(fp,L);
display(L);
fclose(fp);
return 0;
}
...全文
129 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
恩,修改成wb+,后可以读了,debug1和debug2都输出了5次,但是数据没有显示出来,这边temp->item=a;是否存在不妥,修改成temp->item.name=a;时编译错误,应该如何修改?
  • 打赏
  • 举报
回复
读链表部分换成以下内容后解决
while(1)	
		{
		temp=(list)malloc(sizeof(node));
			if(fread(&temp->item, sizeof(temp->item), 1, fp) != 1)break;//重点修改了这边,
			temp->next = L->next;
			L->next = temp;
		}
		free(temp);
	return L;
熊熊大叔 2014-01-19
  • 打赏
  • 举报
回复
应该是文件打开方式的问题,wb方式只写不读,改成wb+试试
angel_su 2014-01-19
  • 打赏
  • 举报
回复
读写用"wb+"模式;另外,写完先fflush一下再读稳当点...
  • 打赏
  • 举报
回复
不好意思,发少一个生成空表
list makeempty(list L)
{
	L=(list)malloc(sizeof(node));
	L->next=NULL;
	return L;
}
list makeempty(list L) { L=(list)malloc(sizeof(node)); L->next=NULL; return L; }

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧