如何保存链表中的数据到文件中

mw3438 2018-03-18 11:36:27
//保存数据到文件中
int saveUserToFile()
{
FILE *file;
USER* currentNode = NULL;

currentNode = head->next;

if ((file = fopen("work.txt", "wb")) == NULL)//判断文件是否打开成功
{
return -1;
}
else
{
while (currentNode!=NULL)
{
if(fwrite(currentNode, sizeof(USER),1,file)!= 1)//将currentNode中的数据循环1次写入file中
{
return -2;
}
else
{
currentNode = currentNode->next;//继续往下读
}
}
fclose(file);//关闭文件
}
return 0;
}
...全文
1561 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2018-03-19
  • 打赏
  • 举报
回复
读写文件逻辑没多大的问题。 建议查一下写之前,链表是否有节点。
赵4老师 2018-03-19
  • 打赏
  • 举报
回复
百度搜相关关键字。
小火龙呢 2018-03-19
  • 打赏
  • 举报
回复
既然是链表,那就得是有数据和保存指针的节点 if (fread(newNode, sizeof(USER), 1, file) != 1) 这样写newNode不是真正的数据吧,newNode->data(自己定义的节点结构可能是其他变量)才是保存的数据吧 if (fread(newNode->data, sizeof(USER), 1, file) != 1) 试试呢
小火龙呢 2018-03-19
  • 打赏
  • 举报
回复
回复完想到可能理解错了,楼主说的保存数据可能是保存整个节点的信息,整个结构体
mw3438 2018-03-18
  • 打赏
  • 举报
回复
//从文件中读入数据到链表中 int readUserFromFile() { FILE *file = NULL; USER* newNode = NULL;//新建一个结点用于从文件读入的数据加入链表中 USER* lastNode = head;//定义尾结点,用于将数据放入链表后面 if ((file = fopen("work.txt", "rb")) == NULL)//rb以二进制的方式进行读取//文件打开不成功----文件不存在 { if ((file = fopen("work.txt", "wb")) == NULL)//创建一个空文件 { return -1; } } else { while (1) { newNode = (USER*)malloc(sizeof(USER)); if (fread(newNode, sizeof(USER), 1, file) != 1)//读入数据,从file中每次读取1块USER大小,放入newNode中//判定返回值是否为1 { free(newNode); newNode = NULL; break; return -2; } else { newNode->next = NULL; lastNode->next = newNode; lastNode = newNode; } } } return 0; } 这是读取数据的代码
mw3438 2018-03-18
  • 打赏
  • 举报
回复 1
想问一下这样保存数据,可以执行,但是数据存不到文件当中

69,371

社区成员

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

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