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语言链表从本地文件中读取和写入数据的更多相关文章

  1. 一些常用的文本文件格式(TXT,JSON,CSV)以及如何从这些文件中读取和写入数据

    TXT文件: txt是微软在操作系统上附带的一种文本格式,文件以.txt为后缀. 从txt文件中读取数据: with open ('xxx.txt') as file: data=file.readl ...

  2. Servlet从本地文件中读取图片,并显示在页面中

    import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpSer ...

  3. 从PCD文件中读取点云数据

    博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=84 在本小节我们学习如何从PCD文件中读取点云数据. 代码 章例1文件夹中, ...

  4. nodeks —— fs模块 —— 从流中 读取和写入数据

    Fs流读取和写入数据 使用文件流来读取大文件不会卡顿 1, 从流中读取数据 var fs = require("fs"); var data = ''; var count = 0 ...

  5. C 语言实例 - 从文件中读取一行

    C 语言实例 - 从文件中读取一行 从文件中读取一行. 文件 runoob.txt 内容: $ cat runoob.txt runoob.com google.com 实例 #include < ...

  6. java 中读取本地文件中字符

    java读取txt文件内容.可以作如下理解: 首先获得一个文件句柄.File file = new File(); file即为文件句柄.两人之间连通电话网络了.接下来可以开始打电话了. 通过这条线路 ...

  7. IOS Android支持中文与本地文件的读取写入

    转自http://www.xuanyusong.com/archives/1069 和http://www.benmutou.com/archives/2094 前几天有个朋友问我为什么在IOS平台中 ...

  8. Java将对象保存到文件中/从文件中读取对象

    1.保存对象到文件中 Java语言只能将实现了Serializable接口的类的对象保存到文件中,利用如下方法即可: public static void writeObjectToFile(Obje ...

  9. Unity3D研究院之IOS Android支持中文与本地文件的读取写

       前几天有个朋友问我为什么在IOS平台中可以正常的读写文件可是在Android平台中就无法正常的读写.当时因为在上班所以我没时间来帮他解决,晚上回家后我就拿起安卓手机真机调试很快就定位问题所在,原 ...

随机推荐

  1. Leetcode(885)- 救生艇

    第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit. 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit. 返回载到每一个人所需的最小船数.(保证每个人都 ...

  2. Verilog基础语法总结

    去年小学期写的,push到博客上好了 Verilog 的基本声明类型 wire w1; // 线路类型 reg [-3:4] r1; // 八位寄存器 integer mem[0:2047]; // ...

  3. sql-libs(5)

    直接只用floor报错注入  或者 update即可

  4. Mac 外接 Dell 4K 显示器字体模糊解决办法

    Mac 外接 Dell 4K 显示器字体模糊解决办法 mac mini mbp 2020 refs https://zhuanlan.zhihu.com/p/52100804 xgqfrms 2012 ...

  5. Linux Schedule Cron All In One

    Linux Schedule Cron All In One 定时任务 / 定时器 GitHub Actions Scheduled events Cron syntax has five field ...

  6. mdn & remove & removeChild

    mdn & remove & removeChild Element https://developer.mozilla.org/en-US/docs/Web/API/Element ...

  7. vue动态添加当前事件下的class

    html部分<div class="star"> <span v-for="(item,index) in 5" @click="c ...

  8. 两百万SPC空投来袭,带动市场热情!

    NGK投放项目的时间节点总是以牛市为主,像是上一次的BGV项目投放就在2020年末的数字加密货币牛市,其结果想必各位生态建设者们都已经见到了,在登陆交易所首日便高收于近889美金,创下惊人的近一千七百 ...

  9. NGK全球行伦敦站,SPC推动全球数字金融创新

    近日,NGK全球巡回路演在英国的首都伦敦盛大落幕,此次路演有幸邀请到了西欧区块链业界弗洛伊德大咖,NGK方面代表鲍利斯以及英国及其组周边国家社群意见代表马丁内斯等人,总计参与人数达到了数十人. 路演一 ...

  10. 下一代币王花落谁家?是否是BGV更胜一筹呢?

    BGV作为Baccarat的平台币横空出世,通过BGV来激励拥有NGK的用户.在共识算法上,Baccarat 在共识层采用了混合机制 DPOSS共识机制,这是维护 Baccarat 生态体系良性发展的 ...