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:内部项目管理的版本号,不对 ...
随机推荐
- TestNG官方文档中文版(5)-测试方法/类和组
5 - Test methods, Test classes and Test groups 5.1 - Test groups TestNG容许执行复杂的测试方法分组.不仅可以申明方法属于组,而且可 ...
- percona server 5.7.16正式发布
继2016年10月12日mysql 5.7.16发布后,percona server 5.7.16终于于11月29日发布了,这是最新版本的5.7系列,可从https://www.percona.com ...
- Play!中使用HTTP异步编程
本章译者:@Sam Liu (译者未留下自己的主页,请Sam Liu见此文,加入群168013302联系‘大黄蜂@翻译play’) 这一章主要讲解如何运用异步模式实现典型的长连接(long-polli ...
- 推荐15款最佳的响应式 Web 设计测试工具
响应式网页设计是根据设备的屏幕尺寸,平台和方向来开发的网页,是一种对最终用户的行为和环境作出反应的方法.响应式设计使用灵活的网格和布局,图像和智能使用 CSS 媒体查询的组合.当从它们在不同设备使用的 ...
- ae
根据属性提取要素(利用GP) http://blog.csdn.net/ewyetc/article/details/6746728
- HTML5攻防向量
From:HTML 5 Morden Day Attack And Defense Vectors Autor:Rafay Baloch 摘要 根据Powermapper出版的统计,他们分析的Web页 ...
- ICSharpCode.SharpZipLib简单使用
胡乱做了个小例子,记录下来,以便后面复习. using System; using System.Collections.Generic; using System.Linq; using Syste ...
- [Android]异步加载图片,内存缓存,文件缓存,imageview显示图片时增加淡入淡出动画
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3574131.html 这个可以实现ImageView异步加载 ...
- JavaScript学习06 JS事件对象
JavaScript学习06 JS事件对象 事件对象:当事件发生时,浏览器自动建立该对象,并包含该事件的类型.鼠标坐标等. 事件对象的属性:格式:event.属性. 一些说明: event代表事件的状 ...
- struts理解
最近大家都在找工作,我好迷茫,觉得自己会的东西太少了.所以决定开始学习SSH三大框架. 首先是struts. struts是基于mvc模式的框架.(struts其实也是servlet封装,提高开发效率 ...