C语言文件操作

/————C语言文件操作(主讲文件操作的函数、实践与应用)

本章重点

1. 为什么使用文件

2. 什么是文件

3. 文件的打开和关闭

4. 文件的顺序读写

5. 文件的随机读写

6. 文本文件和二进制文件

7. 文件读取结束的判定

8. 文件缓冲区

//————1. 为什么使用文件

我们前面学习结构体时,运行时数据是(暂时)存放在内存中的,当程序退出的时候空间需要回收,通讯录中的数据就不存在了,等下次运行通讯

录程序的时候,数据又得重新录入。当我们想把信息记录下来的时候,只有我们自己选择删除数据的时候,数据才不复存在。

这就涉及到了数据持久化的问题,我们一般数据持久化的方法有,把数据存放在磁盘文件、存放到数据库等方式。

使用文件我们可以将数据直接存放在电脑的硬盘上,做到了数据的持久化(的存储)。

//——2. 什么是文件

磁盘上的文件是文件。

但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)

//2.1 ——程序文件

包括源程序文件(后缀为.c), 目标文件(windows环境后缀为.obj), 可执行程序(windows环境

后缀为.exe)。

//2.2 ——数据文件

文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,

或者输出内容的文件。

在以前各章所处理数据的输入输出都是以终端为对象的,即从终端的键盘输入数据,运行结果显示到显

示器上。

其实有时候我们会把信息输出到磁盘上,当需要的时候再从磁盘上把数据读取到内存中使用,这里处理

的就是磁盘上文件。

2.3 ——文件名

一个文件要有一个唯一的文件标识,以便用户识别和引用。

文件名包含3部分:文件路径 + 文件名主干 + 文件后缀

例如: c : \code\test.txt

为了方便起见,文件标识常被称为文件名。

3.———— 文件的打开和关闭

3.1 ——文件指针

缓冲文件系统中,关键的概念是“文件类型指针”,简称“文件指针”。

每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名

字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有系统

声明的,取名FILE.

例如,VS2013编译环境提供的 stdio.h 头文件中有以下的文件类型申明:

//struct _iobuf {

//    char* _ptr;

//    int   _cnt;

//    char* _base;

//    int   _flag;

//    int   _file;

//    int   _charbuf;

//    int   _bufsiz;

//    char* _tmpfname;

//};

//typedef struct _iobuf FILE;

//不同的C编译器的FILE类型包含的内容不完全相同,但是大同小异。

//每当打开一个文件的时候,系统会根据文件的情况自动创建一个FILE结构的变量,并填充其中的信息,

//使用者不必关心细节。

//一般都是通过一个FILE的指针来维护这个FILE结构的变量,这样使用起来更加方便。

//下面我们可以创建一个FILE* 的指针变量:

//定义pf是一个指向FILE类型数据的指针变量。可以使pf指向某个文件的文件信息区(是一个结构体变

//量)。通过该文件信息区中的信息就能够访问该文件。也就是说,通过文件指针变量能够找到与它关联

//的文件。

//3.2 文件的打开和关闭

//文件在读写之前应该先打开文件,在使用结束之后应该关闭文件。

//在编写程序的时候,在打开文件的同时,都会返回一个FILE * 的指针变量指向该文件,也相当于建立了指

//针和文件的关系。

//ANSIC 规定使用fopen函数来打开文件,fclose来关闭文件。

打开文件

//FILE * fopen(const char* filename, const char* mode);

关闭文件

//int fclose(FILE* stream);

///* fopen fclose example */

//#include <stdio.h>

//int main()

//{

//    FILE* pFile;

//    //打开文件

//    pFile = fopen("myfile.txt", "w");

//    //文件操作

//    if (pFile != NULL)

//    {

//        fputs("fopen example", pFile);

//        //关闭文件

//        fclose(pFile);

//    }

//    return 0;

//}

——4. 文件的顺序读写

功能                         函数名                 适用于

字符输入函数                 fgetc                 所有输入流

字符输出函数                 fputc                 所有输出流

文本行输入函数               fgets                 所有输入流

文本行输出函数               fputs                 所有输出流

格式化输入函数               fscanf                所有输入流

格式化输出函数               fprintf               所有输出流

二进制输入                   fread                 文件

二进制输出                   fwrite                文件

——4.1 对比一组函数:

//scanf / fscanf / sscanf

//printf / fprintf / sprintf

//这里演示讲解这句函数的使用和对比

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值