C语言中怎么将文件里的数据创建到(读到)链表中?
定义的结构体:
struct student
{
]; //学生学号
]; //学生姓名
struct student *next; //next 指针 指向 struct student 类型的变量
}stu;
创建文件:
void Create_File_List()
{
FILE *fp;
if ((fp = fopen("student.txt","rb"))==NULL) /*如果此文件不存在*/
{
if ((fp = fopen("student.txt","wb+"))==NULL)
{
outtextxy(, , "无法建立文件!");
}
}
}
写入文件信息:
/***************
函数功能:录入出勤学生
/***************/
void add_student( )
{
FILE *fp;
fp=fopen("student.txt","a+");
strcpy(stu.ID,"");// 与链表head结点 无数据 有关
strcpy(stu.name,"");
fwrite(&stu,,fp);
InputBox(stu.ID,,"请输入学生学号");
outtextxy(,,stu.ID);
Sleep();
InputBox(stu.name,,"请输入学生姓名");
outtextxy(,,stu.name);
Sleep();
fwrite(&stu,,fp);
fclose(fp);
}
这里值得注意的是:写入文件的时候,开始时要事先写入第一个数据,这里写入的空数据,这与链表head处数据为空有关。
从已经写入的文件中读到链表中:
/***************
函数功能:创建链表
/***************/
struct student * CreateList()
{
struct student *pointer,*head,*q;//head指针为链表的头结点,是找到链表的唯一依据,如果head指针丢失,那么整个链表就找不到了;p指针总是指向新申请的结点;q指针总是指向尾节点
struct student temp;//定义结构体别名
FILE *fp;
pointer=(struct student *)malloc(sizeof(struct student )); // p指向新开辟的节点内存
head = pointer; //开辟头结点内存 头结点中没有学生成绩信息
q = pointer; //开辟尾节点内存 q指针总是指向尾节点
q->next = NULL; // //标志链表的结束 尾节点的特点是next成员的值为NULL,它是最后一个节点,作为链表结束的标志,NULL是一个符号常量表示值为0的地址
fp=fopen("student.txt","rb");
,fp)!=)//从文件中读结构体块
{ pointer=(struct student*)malloc(sizeof(struct student)); // p指向新开辟的节点内存
strcpy(pointer->ID,temp.ID);
strcpy(pointer->name,temp.name);
q->next=pointer; //把新节点挂到原尾节点之后
q=q->next; //q指针指向新的尾节点
}
q->next=NULL;//标志链表的结束
fclose(fp);
return head;
}
从链表中输出打印到屏幕中数据:
/***************
函数功能:
输出链表 返回:指向链表表头的指针
/***************/
void Print_List(struct student *head)
{
struct student* pointer;
pointer=head->next; //跳过无数据的头结点
while(pointer!=NULL)
{
outtextxy(x,y,pointer->ID);
outtextxy(x,y,pointer->name);
pointer=pointer->next;//指向下一个节点
}}
C语言中怎么将文件里的数据创建到(读到)链表中?的更多相关文章
- python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件
python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 python操作txt文件中 ...
- Android中fragment_main.xml文件里的组件获取的问题
package com.dhy.phonedial; import android.app.Activity; import android.app.Fragment; import android. ...
- spring boot 在框架中注入properties文件里的值(Spring三)
前一篇博客实现了打开第一个页面 链接:https://blog.csdn.net/qq_38175040/article/details/105709758 本篇博客实现在框架中注入propertie ...
- 修改Android中strings.xml文件, 动态改变数据
有些朋友可能会动态的修改Android中strings.xml文件中的值,在这里给大家推荐一种简单的方法.strings.xml中节点是支持占位符的,如下所示: <string name=&qu ...
- 基于CentOS的MySQL学习补充四--使用Shell批量从CSV文件里插入数据到数据表
本文出处:http://blog.csdn.net/u012377333/article/details/47022699 从上面的几篇文章中,能够知道怎样使用Shell创建数据库.使用Shell创建 ...
- 《程序实现》从xml、txt文件里读取数据写入excel表格
直接上码 import java.io.BufferedReader; import java.io.DataInputStream; import java.io.File; import java ...
- 图解如何 将Excel里的数据导入到sql server数据库中
项目中,经常会碰到如何将Excel里的数据导入到sql server中的问题. 下面,图解如何实现导入Excel中的数据到sql server 2008 R2: Excel截图如下: 查询pub数据库 ...
- 在vue项目中的js文件里使用vue实例
参考的网址:https://blog.csdn.net/weixin_34353714/article/details/86958742 不为其他,就为了记录一下,方便以后查看: 第一种方法: 1.首 ...
- Xcode中Info.plist文件里的"Bundle versions string, short" 跟 "Bundle version" 的区别
Bundle versions string, short:用于itunes上显示的版本号,即对外的版本.(最多是3个部分组成即 x.y.z) Bundle version:内部项目管理的版本号,不对 ...
随机推荐
- Intro.js 网站演示
Intro.js 为您的网站和项目提供一步一步的.更好的介绍 使用简单 引入 js 和 css,然后在代码中加入步骤和介绍. 快速小巧 7 KB 的 JavaScript 和 3 KB CSS,就是全 ...
- Boba.js – 用于 Google 统计分析 JavaScript 库
Boba.js 是一个小的,易于扩展的 JavaScript 库,让谷歌分析(Google Analytics)的更灵活,更容易.它同时支持旧的 ga.js 库以及新的 analytics.js 库. ...
- 推荐几个jQuery插件
jQuery仿京东无限级菜单HoverTree http://www.cnblogs.com/jihua/p/hvtree.html 多级弹出菜单jQuery插件ZoneMenu http://www ...
- input输入样式,动画
模板描述:input输入样式 动画,有输入框也有搜索框的样式,多种多样,大家根据自己的喜欢来. 找网站SEO教程,网站模板,以及想要建立个人博客的朋友来涂志海个人博客网,这里有你想要的一切(万一没有的 ...
- RT-Thread入门和模拟器的配置生成
RT-Thread是一个国产开源的实时操作系统,支持MCU多,外设丰富.值得学习 下载地址:http://www.rt-thread.org/page/31.html ,解压可以得到一下目录结构:|- ...
- AE,按照属性值关系选择要素
if(axMapControl2.LayerCount<=0) { MessageBox.Show("请加载图层后使用该功能","系统提示",Messag ...
- Linux学习心得之 双显卡、中文输入法及svn初步使用
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 双显卡.中文输入法及svn初步使用 1.前言 2.Linux双显卡解决 ...
- 【读书笔记】iOS网络-同步请求,队列式异步请求,异步请求的区别
一,同步请求的最佳实践. 1,只在后台过程中使用同步请求,除非确定访问的是本地文件资源,否则请不要在主线程上使用. 2,只有在知道返回的数据不会超出应用的内存时才使用同步请求.记住,整个响应体都会位于 ...
- iOS--归档和解档(Archiver)、(UnArchiver)
一.已有类型的归档和解档 首先来看一个简单的例子: //第一方式:归档对象 //对象-->文件 NSArray *array = [NSArray arrayWithObjects:@" ...
- 自定义Cell的方法
Cell属于UITableView中的组件,有多种定义方式,有系统自带的方法,有自定义的方法. 可以使用系统的方法setSeparatorColor(设置分割线颜色) 设置setSeparatorSt ...