c语言链表从本地文件中读取和写入数据
1 typedef struct Data{
2 40 char *name;
3 41 char *IDCARD;
4 42 char *job_id;
5 43 char *length;
6 44 char *education;
7 45 char *marriage;
8 46 int local;
9 47 }Data;
10 48
11 49 typedef struct node{
12 50 Data *data;
13 51 struct node *next;
14 52 struct node *prior;
15 53 }node;
16 54
17 55 typedef struct doublelist{
18 56 node *head;
19 57 node *tail;
20 58 size_t size;
21 59 }doublelist;
22 60
1 void inserttail2(node *newnode)
2 126 {
3 127 if(list->size == 0){
4 128 list->tail = newnode;
5 129 list->head = newnode;
6 130 }
7 131 else{
8 132 newnode->prior = list->tail;
9 133 list->tail->next = newnode;
10 134 list->tail = newnode;
11 135 }
12 136 list->size++;
13 137 }
14 void SaveInformation()
15 380 {
16 381 node *temp = list->head;
17 382 FILE *file = fopen("staff_information.txt","w");//进行追加写
18 383 if(file == NULL){
19 384 return;
20 385 }
21 386 else{
22 387 while(temp != NULL){
23 388 fprintf(file,"%s\t\t",temp->data->name);
24 389 fprintf(file,"%s\t\t",temp->data->IDCARD);
25 390 fprintf(file,"%s\t\t",temp->data->job_id);
26 391 fprintf(file,"%s\t\t",temp->data->length);
27 392 fprintf(file,"%s\t\t",temp->data->education);
28 393 fprintf(file,"%s\n\n",temp->data->marriage);
29 394 temp = temp->next;
30 395 }
31 396 fclose(file);
32 397 }
33 398 }
34 399
35 400 void ReadInformation()
36 401 {
37 402 node *temp = list->head;
38 403 FILE *file = fopen("staff_information.txt","r");
39 404 if(file == NULL){
40 405 return;
41 406 }
42 407 else{
43 408 while(!feof(file)){
44 409 node *newnode = creat_node();//此函数返回值就为一个新节点,这行代码大家可以不用在意
45 410 fscanf(file,"%s\t\t",newnode->data->name);
46 411 fscanf(file,"%s\t\t",newnode->data->IDCARD);
47 412 fscanf(file,"%s\t\t",newnode->data->job_id);
48 413 fscanf(file,"%s\t\t",newnode->data->length);
49 414 fscanf(file,"%s\t\t",newnode->data->education);
50 415 fscanf(file,"%s\t\t",newnode->data->marriage);
51 416 inserttail2(newnode);//t尾插法插入节点
52 417 }
53 418 fclose(file);
54 419 }
55 420 return;
56 421 }
附上creat_node代码原型
1 node *creat_node(){
2 12 node *newnode;
3 13 newnode = (node *)malloc(sizeof(node));
4 14 newnode->data = (Data *)malloc(sizeof(Data));
5 15 if(newnode->data != NULL){
6 16 newnode->data->name = (char *)malloc(50 *sizeof(char));
7 17 newnode->data->IDCARD= (char *)malloc(50 *sizeof(char));
8 18 newnode->data->job_id = (char *)malloc(50 *sizeof(char));
9 19 newnode->data->length = (char *)malloc(50 *sizeof(char));
10 20 newnode->data->education = (char *)malloc(50 *sizeof(char));
11 21 newnode->data->marriage = (char *)malloc(50 *sizeof(char));
12 22 }
13 23 newnode->prior = NULL;
14 24 newnode->next = NULL;
15 25 return newnode;
16 26 }//创建一个新结点
大家照这个模板来就能解决大家的问题,顺式结构其实也几乎一样,希望能帮大家解决问题。
c语言链表从本地文件中读取和写入数据的更多相关文章
- 一些常用的文本文件格式(TXT,JSON,CSV)以及如何从这些文件中读取和写入数据
TXT文件: txt是微软在操作系统上附带的一种文本格式,文件以.txt为后缀. 从txt文件中读取数据: with open ('xxx.txt') as file: data=file.readl ...
- Servlet从本地文件中读取图片,并显示在页面中
import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpSer ...
- 从PCD文件中读取点云数据
博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=84 在本小节我们学习如何从PCD文件中读取点云数据. 代码 章例1文件夹中, ...
- nodeks —— fs模块 —— 从流中 读取和写入数据
Fs流读取和写入数据 使用文件流来读取大文件不会卡顿 1, 从流中读取数据 var fs = require("fs"); var data = ''; var count = 0 ...
- C 语言实例 - 从文件中读取一行
C 语言实例 - 从文件中读取一行 从文件中读取一行. 文件 runoob.txt 内容: $ cat runoob.txt runoob.com google.com 实例 #include < ...
- java 中读取本地文件中字符
java读取txt文件内容.可以作如下理解: 首先获得一个文件句柄.File file = new File(); file即为文件句柄.两人之间连通电话网络了.接下来可以开始打电话了. 通过这条线路 ...
- IOS Android支持中文与本地文件的读取写入
转自http://www.xuanyusong.com/archives/1069 和http://www.benmutou.com/archives/2094 前几天有个朋友问我为什么在IOS平台中 ...
- Java将对象保存到文件中/从文件中读取对象
1.保存对象到文件中 Java语言只能将实现了Serializable接口的类的对象保存到文件中,利用如下方法即可: public static void writeObjectToFile(Obje ...
- Unity3D研究院之IOS Android支持中文与本地文件的读取写
前几天有个朋友问我为什么在IOS平台中可以正常的读写文件可是在Android平台中就无法正常的读写.当时因为在上班所以我没时间来帮他解决,晚上回家后我就拿起安卓手机真机调试很快就定位问题所在,原 ...
随机推荐
- 牛客网-n的约数【dfs】
题目描述:戳这里 解题思路:这题思路好想,n最多也就是20个不同的素数相乘,把所有可能的素数找到,然后枚举素数个数就行了. n = p1^q1 + p2^q2 + p3 ^q3 + ... + pi ...
- 9. Lock wait timeout exceeded
一. 现象 用户打开消息推送有概率报错,后续发现推送消息阅读数.点赞数无法正常更新,mysql报警有行锁, DBA抓到有锁表语句,kill该语句未正常恢复,elk日志有大量的java.sql.SQLE ...
- v-for & for...in vs for...of
v-for & for...in vs for...of for..in vs for...of for (const key in object) { if (Object.hasOwnPr ...
- cookie all in one
cookie all in one credentials: "include" https://developers.google.com/web/updates/2015/03 ...
- Flutter for Desktop
Flutter for Desktop https://flutter.dev/desktop https://github.com/flutter/flutter/wiki/Desktop-shel ...
- 伦尼斯酒庄(Chateau Renice)再次赞助亚洲50大餐厅赛事
连续几年来,伦尼斯酒庄(Chateau Renice)一直是亚洲50大最佳餐厅评选赛(Asia's 50 Best Restaurant Awards)的赞助商.2020年伦尼斯酒庄酒庄(Chatea ...
- PAUL ADAMS ARCHITECT:费城东北区的房地产市场逆势而行
根据Zillow.com的房产数据,大费城地区前三季度成交房产的平均价格为27.2万美元,较去年同期增长了13.4%,为10年同期最高.即使如此,27.2万的均价与纽约相比依然相距甚远,其中尤其是费城 ...
- 翻译:《实用的Python编程》01_07_Functions
目录 | 上一节 (1.6 文件) | 下一节 (2.0 处理数据) 1.7 函数 随着程序开始变大,我们会想要有条理地组织这些程序.本节简要介绍函数.库模块以及带有异常的错误处理. 自定义函数 对你 ...
- C++ 多线程使用future传递异常
如果 std::async 调用的函数抛出异常,那么这个异常会被存储在值的位置,同时 future 变为 ready ,如果调用 get() 会重新抛出存储的异常. Note: 标准并没有指定原来的异 ...
- Java并发包源码学习系列:同步组件Semaphore源码解析
目录 Semaphore概述及案例学习 类图结构及重要字段 void acquire() 非公平 公平策略 void acquire(int permits) void acquireUninterr ...