(不知怎么修正,求指点)一个用C语言实现将TXT文件数据加载到链表的程序
(不知如何修正,求指点)一个用C语言实现将TXT文件数据加载到链表的程序
可以将数据写入data中,转化成链表失败,显示为空,自己找出来一些问题,用红色标注了,哪位大侠帮小弟分析下!
------解决方案--------------------
读写用"wb+"模式;另外,写完先fflush一下再读稳当点...
------解决方案--------------------
应该是文件打开方式的问题,wb方式只写不读,改成wb+试试
可以将数据写入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;
}
------解决方案--------------------
读写用"wb+"模式;另外,写完先fflush一下再读稳当点...
------解决方案--------------------
应该是文件打开方式的问题,wb方式只写不读,改成wb+试试