1、“文件(file)”:所谓“文件”是指一组相关数据的有序集合。数据以文件的形式存放在外部介质(一般是磁盘、磁带、光盘等)上,在操作系统中是以文件为单位对数据进行管理的。以文件名作为访问文件的标识。
2、C语言把文件看作一个字节序列,即由一连串的字节组成。根据文件中的数据组织形式,数据文件可分为ASCII码文件和二进制文件。
ASCII码文件,又称为“文本文件”(text),其每一个字节存放一个ASCII码。
二进制文件,把内存中的数据按其在内存中的存储形式存放在磁盘上。
3、按照操作系统对磁盘文件的读写方式,文件可以分为“缓冲文件系统”和“非缓冲文件系统”。
缓冲文件系统:操作系统在内存中为每一个正在使用的文件开辟一个读写缓冲区。从内存向磁盘输出数据必须先送到内存中的缓冲区,装满缓冲区后才一起送到磁盘上。如果从磁盘向内存读入数据,则一次从磁盘文件将一批数据输入到内存缓冲区,然后再从缓冲区逐个地将数据送到程序数据区。 非缓冲文件系统:指操作系统不自动开辟确定大小的读写缓冲区,而由程序为每个文件设定缓冲区。
在UNIX系统下,用缓冲文件系统来处理文本文件,用非缓冲文件系统处理二进制文件。ANSI C标准只采用缓冲文件系统。
自己手动把学生的信息存入一个文件,文件的格式为:
学号 姓名 成绩1 成绩2 成绩3
XXX XXX 33 45 55
这样列出20个人
然后读文件 把这20个人的信息读入一个链表中 然后计算每个人的总分 然后按总分排序 然后把处理好的
信息再写入另外一个文件中
写入的格式为:
学号 姓名 成绩1 成绩2 成绩3 总分 排名
XXX XXX 33 45 55
1、首先,得自己建一个文件用来保存这些数据
具体步骤如下:
①创建一个文本文件 mystu.txt
②写入20个学生的数据
③保存
好了,这个文本数据就创建成功了!
注意:在putty里面要先把Translation改成UTF-8.
在输完汉字名字时要把输入法换成英文输入法再进行保存.
2、现在要开始写程序来进行读取mystu.txt的数据了
【这里我是用makefile写的,其实gcc也可以编译的,两者都可以。这里我就以makefile来介绍】
①先写一个通用版的makefile如下:
③然后先做好先前的预备工作
④主函数func.c
⑤调用的函数及调用的函数里再调用的函数(2个)
student.c
delet.c
好了,这样一个简单的文件读取学生信息的任务就完成啦!
效果:
注意:1、在读取文件时,根据你的所需,是要进行读文件还是要进行写文件视逻辑关系而定。
2、在用链表的排序上,我调用的是删除最大的一个数值,同时写入文件中去了(当然,你也可以用冒泡法来进行排序,之间的指针,地址转换可要弄清楚啦,要不然是乱七八糟的咯)。
3、在输入汉字的时候,尽量在putty里面输入,要不然可能是乱码哦 。