C语言程序设计——文件操作

news2024/11/26 20:32:45

一、文件的打开和关闭

1. 文件指针

        每个被使用的文件,都会在内存中开辟一个相应的文件信息区,用来存储文件的相关信息(文件名、文件状态、文件位置……)。

        这些信息是保存在一个结构体变量中,该结构体类似是由系统声明,取别名为FILE。

注意:

(1)不同的编译器的FILE类型所包含的内容不完全相同,但都大同小异;

(2)每当打开一个文件时,系统会根据文件的情况自动创建一个FILE结构体变量,并填充内部的信息,不需要使用者手动操作。

2. 文件的打开和关闭

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

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

文件的打开和关闭:

// 打开文件
FILE* fopen(const char* filename, const char* mode);
// 关闭文件
int fclose(FILE* stream);

文件的打开方式:

文件使用方式含义若指定文件不存在
"r"(只读)打开一个已经存在的文本文件出错
"w"(只写)打开一个文本文件创建该文件
"a"(追加)向文本文件末尾添加数据创建该文件
"rb"(只读)打开一个已经存在的二进制文件出错
"wb"(只写)打开一个二进制文件创建该文件
"ab"(追加)向一个二进制文件末尾添加数据出错
"r+"(读写)为了读和写,打开一个文本文件出错
"w+"(读写)为了读和写,建一个新的文件创建该文件
"a+"(读写)打开文件,在文件尾进行读写创建该文件
"rb+"(读写)为了读和写打开一个二进制文件出错
"wb+"(读写)为了读和写新建一个新的二进制文件创建该文件
"ab+"(读写)打开一个二进制文件,在文件尾进行读和写创建该文件

二、文件的读写

1. 文件的顺序读写

功能函数名适用于
字符输入函数fgetc所有输入流
字符输出函数fputc所有输出流
文本行输入函数fgets所有输入流
文本行输出函数fputs所有输出流
格式化输入函数fscanf所有输入流
格式化输出函数fprintf所有输出流
二进制输入fread文件
二进制输出fwrite文件

1.2 函数使用示例:

       1. 一次写入/读取一个字符:

FILE* pf = fopen("test.txt", "r");
if (pf != NULL) {
	//for (char i = 'a'; i <= 'z'; ++i) {
	//	fputc(i, pf);
	//}
	for (int i = 0; i < 26; ++i) {
		printf("%c ", fgetc(pf));
	}
	fclose(pf);
}

        2. 一次读取/写入一行:

         3. 格式化输入:

         4. 格式化输出:

1.3 函数对比

(1)scanf 与 printf

        scanf:是针对标准输入的格式化输入语句。

        printf:是针对标准输出的格式化输出语句。

(2)fscanf 与 fprintf

        fscanf:是针对所有输入流的格式化输入语句。

        fprintf:是针对所有输出流的格式化输出语句。

(3)sscanf 与 sprintf

        sscanf:从一个字符串中转化出格式化的数据。

        sprintf:把格式化的数据转化为一个字符串。

2. 文件的随机读写

2.1 fseek

         根据文件指针的位置和偏移量来定位文件指针:

int fseek(FILE* stream, long int offset, int origin);

stream:打开文件返回的文件指针;

offset:偏移量

origin:文件指针位置:

        SEEK_SET:文件起始位置

        SEEK_CUR:文件当前位置

        SEEK_END:文件末尾位置

2.2 ftell

        返回文件指针相对于起始位置的偏移量:

long int ftell(FILE* stream);

2.3 rewind

         让文件指针的位置返回到文件的起始位置:

void rewind(FILE* stream);

三、文本文件和二进制文件

        根据数据的组织形式,数据文件被称为文本文件或二进制文件:

二进制文件:数据在内存中以二进制的形式存储,并且不加转换的输出到外存。

文本文件:以ASCII码字符的形式存储的文件。

四、文件读取结束的判定

注意:

        在文件读取过程中,不能使用feof函数的返回值来直接判断文件是否读取结束;而是应用于在当前文件读取结束的时候,判断是读取失败导致的结束,还是遇到了文件末尾结束

(1)文本文件读取

        判断返回值是否为EOF(fgetc),或者NULL(fgets)。

(2)二进制文件读取

        判断(fread)返回值是否小于实际要读取的个数。

五、文件缓冲区

         文件缓存系统:是指系统自动地在内存中为程序中每一个正在使用的文件开辟一块“文件缓冲区”。

        (1)从内存向磁盘输出的数据:会先送入到内存中的缓冲区中,等到缓冲区满后再一次送入到磁盘上。

        (2)从磁盘向计算机读取数据:则从磁盘读取的数据先送入到内存缓冲区中,然后再从缓冲区逐个将数据送入到程序数据区中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/784730.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

选择优秀的敏捷项目管理工具:指南与考虑因素!

如何选择优秀的敏捷项目管理工具?敏捷项目管理工具是用于管理和执行敏捷项目的任何工具。在最基本的形式中&#xff0c;白板和便签可以被认为是敏捷管理工具。敏捷工具和其他项目管理工具之间的主要区别在于它们处理敏捷框架的能力&#xff0c;例如看板和Scrum。 换句话说&…

OpenAI推动人工智能治理向前发展

OpenAI和其他领先的人工智能实验室正在做出一系列自愿承诺&#xff0c;以加强人工智能技术和我们的服务的安全性、安全性和可信度。这个过程由白宫协调&#xff0c;是在美国和世界各地推进有意义和有效的人工智能治理的重要一步。 作为我们建立安全和有益的AGI的使命的一部分&a…

符合国内企业国产化需求的进销存系统

编者按&#xff1a;随着国内企业的数字化转型以及国产信创的要求&#xff0c;企业在选择软件系统的时候更加关注国产化这方面的是否能够被满足&#xff0c;信创需求的被满足&#xff0c;意味着可适用的范围更加宽泛&#xff0c;对企业来说&#xff0c;是一个花小成本有大收益的…

【简单图论】CF1833 E

Problem - E - Codeforces 题意&#xff1a; 思路&#xff1a; 显然&#xff0c;最大值就是什么边都不连的连通块个数&#xff0c;最小值就是能连的都连上 那就是&#xff0c;如果一个连通块存在度为1的点&#xff0c;就把它当作接口连接 Code&#xff1a; #include <b…

23.动态加载

动态加载 html部分 <div class"loading"> </div>css部分 *{margin: 0;padding: 0; } body{background-color: #2c3e50;display: flex;align-items: center;justify-content: center;height: 100vh;overflow: hidden; } .loading{position: relative;w…

Simulink仿真模块 - Mux

Mux:将相同数据类型和复/实性的输入信号合并为虚拟向量 在仿真库中的位置为:Simulink / Commonly Used Blocks Simulink / Signal Routing HDL Coder / Commonly Used Blocks HDL Coder / Signal Routing 模型为: 说明 Mux 模块将具有相同数据类型和复/实性的输入合并为一个向…

高精度地图服务引擎项目

技术栈&#xff1a;使用vue3TypeScriptElement PlusPiniaaxios 项目描述&#xff1a;高精度地图服务引擎项目&#xff0c;提供轻量化处理3D瓦片切片分布式处理分发服务的一站式解决方案 工作内容&#xff1a;1、项目60%已上的页面开发 2、部分模块的功能实现&#xff0c; 3、封…

网络安全进阶学习第七课——文件包含漏洞

文章目录 一、文件包含概念二、文件包含漏洞原理三、文件包含分类文件包含分为两种&#xff1a; 四、与文件包含相关的配置文件&#xff1a;&#xff08;php.ini文件&#xff09;五、与文件包含有关的函数1、include()2、include_once()3、require()4、require_once() 六、文件…

深兰科技大模型入围2023年数字经济应用场景“揭榜挂帅” 项目名单

7月17日&#xff0c;武汉市2023年数字经济应用场景“揭榜挂帅”拟揭榜项目名单&#xff0c;正式揭晓公示。 在经专家评审、项目路演、现场核查等层层遴选之后&#xff0c;由深兰科技武汉研发中心、深兰科技(上海)有限公司联合武汉碧水产业发展有限公司、武汉江汉路步行街投资发…

IDEA导入微服务项目后自动将微服务展示在service面板中

有时候&#xff0c;不会自动将微服务展示在service面板中。 添加service面板&#xff1a; service面板&#xff1a; 更新所有maven&#xff0c;就可以自动将微服务展示在service面板中。

C++: day7

1.简单实现部分vector #include <iostream>using namespace std;template <typename T> class My_vector { private:T * first; //指向第一个元素T * last; //指向最后一个元素T * end; //指向容器末尾public://构造函数My_vector(){first las…

通识测试08

正交试验法 正交实验助手&#xff08;工具&#xff09; 正交原理介绍 一、正交实验法&#xff0c;统计学家提出 2.使用工具&#xff1a;正交表 3. 统计和分析实验数据&#xff0c;从大量实验中找到合适的实验数据组合。 4. 大量实验中挑选一部分具有代表性的点。进行实验&…

三星李在镕亲会马斯克,低价拿下特斯拉HW5.0芯片订单

作者|Amy 编辑|德新 提到特斯拉&#xff0c;第一印象往往是「美国新晋新能源汽车巨头」。实际上特斯拉的芯片设计也是走在行业前列的。 2016年&#xff0c;特斯拉挖来了传奇芯片大师Jim Keller&#xff0c;搭建了由Pete Bannon等大牛组建的芯片研发团队。其自研的HW3.0&#…

钉钉和金蝶云星空接口打通对接实战

钉钉和金蝶云星空接口打通对接实战 对接系统&#xff1a;钉钉 钉钉是阿里巴巴集团打造的企业级智能移动办公平台&#xff0c;是数字经济时代的企业组织协同办公和应用开发平台。钉钉将IM即时沟通、钉钉文档、钉闪会、钉盘、Teambition、OA审批、智能人事、钉工牌、工作台深度整…

夯实数字化转型安全地基,华东某农商行开源安全治理经验

华东某农村商业银行是一家全国首批组建的股份制农村金融机构。近年来&#xff0c;该农商行坚持“科技强行”战略&#xff0c;进一步夯实数字化核心基础&#xff0c;积极推动金融科技与产品、服务的深度融合&#xff0c;努力拓展数字金融的包容性&#xff0c;让数字金融更有温度…

音频降噪之人声分离

音频降噪 Ultimate Vocal Remover GUI v5.5.1工具使用 1&#xff1a;是什么 集成目前最先进的从音频文件中分离人声的源分离模型。 本工程&#xff0c;将Ultimate Vocal Remover GUI v5.5.1界面工具&#xff0c;改写成可以在服务器端批量推理的工具。 界面仓库地址&#xff…

【2023 年第二届钉钉杯大学生大数据挑战赛】 初赛 B:美国纽约公共自行车使用量预测分析 问题三时间序列预测Python代码分析

2023 年第二届钉钉杯大学生大数据挑战赛 初赛 B&#xff1a;美国纽约公共自行车使用量预测分析 问题三时间序列预测Python代码分析 相关链接 【2023 年第二届钉钉杯大学生大数据挑战赛】 初赛 B&#xff1a;美国纽约公共自行车使用量预测分析 问题一Python代码分析 【2023 年…

Jetson Orin Nano 平台适配IMX715 camera驱动调试记录

1. 前言 Jetson Orin Nano Devkit适配imx715 camera 使用argus_camera捕获流,图片是黑色的 用示波器来测量mipi信号,信号正常 Jetpack版本: sensor参数: dts配置 i2c@1 { sw_mipi_cam1: cam_1@1a { compatible = “sensing,imx715_1”; /* I2C device address */ reg =…

2.4G无线遥控开关插座方案开发

在日常生活和工业生产中&#xff0c;无线遥控开关常用于控制门闸、卷帘门窗、水泵电机等场景。宇凡微推出的免布线遥控开关方案基于2.4G合封芯片设计开发&#xff0c;遥控插座芯片提供了信号接收端按键编码设定、继电器控制、状态显示等功能。 一、遥控开关方案介绍 无线遥控开…

ChatGPT付费创作系统小程序端开发工具提示打开显示无法打开页面解决办法

很多会员在上传小程序前端时经常出现首页无法打开的情况&#xff0c;错误提示无法打开该页面&#xff0c;不支持打开&#xff0c;这种问题其实就是权限问题&#xff0c;页面是通过调用web-view访问&#xff0c;说明业务域名有问题&#xff0c;很多都是合法域名加了&#xff0c;…