C语言——文件操作

归纳编程学习的感悟,
记录奋斗路上的点滴,
希望能帮到一样刻苦的你!
如有不足欢迎指正!
共同学习交流!
🌎欢迎各位→点赞 👍+ 收藏⭐ + 留言​📝

我辈皆凡人,用一生铺就的,走到终点也不过是平凡之路。

但只要不忘初心,砥砺前行,再渺小的无名之辈,亦有华彩。

 一起加油! 

 

目录

💦前言:

💦文件的基本的概念:

💦文件类型和常用函数: 

💦文件的打开与关闭 :

💦简单文件操作的例子 :


💦前言:

        如果你在计算机上调试过 C 语言程序,一定有保存程序的概念。保存程序就是将编辑好的 C语言程序以文件的形式存储在计算机的外存储器上,比如存储在磁盘上,形成源程序文件。对源程序进行编译、链接后会产生目标文件(.obj)可执行文件(.exe)
        在前面的程序中,程序处理的数据往往需要从键盘输入,程序处理的结果总是输出到显示器上。在程序调试过程中,每运行一次程序就要输入一次数据,如果输入数据较多,则是一件相当麻烦的事情,也容易出错。为了使数据可重复、永久使用,可将程序处理的数据存放在文件中,需要时将文件中的数据读入内存,供程序处理。同样,程序的处理结果也可以保存在文件中,供其他程序使用或显示输出。事实上,计算机处理的诸如数字、文字、图形、声音、图像、视频等大量的数据都是存储在文件中的。

💦文件的基本的概念:

        文件是信息的集合。在 C 语言中,包括磁盘文件设备文件。磁盘文件是存储在磁盘上的信息的集合,而所有能进行输入/输出的终端设备都被视为设备文件。如键盘是标准输入文件显示器是标准输出文件。如果文件中存储的是程序,这样的文件称为程序文件;如果文件中存储的是供程序处理的数据,则称为数据文件。C 语言把文件视为一个字节(字符)序列,即文件是由字节(字符)组成的序列,允许以字节(字符)为单位进行读/写。就好像在程序和文件或设备之间有字节流在流动,所以将这种组织形式和存取方式的文件形象地称为流式文件

        根据数据的组织形式,可以把文件分为两类: 文本文件二进制文件。文本文件中的每个字节存放一个 ASCII码代表一个字符。二进制文件中的数据以数据在内存中的形式存放。 

        文本文件中的一个字节对应一个字符,便于对字符逐个处理,也便于输出字符;但一般要占用较多的磁盘空间,而且在读入内存或写入文件时要进行格式转换,需要转换时间。二进制文件中的数据格式与数据在内存的存储形式相同占用较少的磁盘空间,读入内存或写入文件时也不进行格式转换,数据的输入/输出速度较快
        对流式文件的处理方式有两种,缓冲文件系统非缓冲文件系统。所谓缓冲文件系统是指系统自动地为每个正在使用的文件开辟一个缓冲区(内存的某个特定区域); 如果从内存向磁盘写数据,数据先写入缓冲区中,当缓冲区写满之后或文件关闭时,才把缓冲区的内容一次全部写入磁盘文件;如果从磁盘读数据到内存,系统先一次性从磁盘文件读入一批数据送入内存缓冲区,然后再从缓冲区取数据供程序处理。非缓冲文件系统不会为使用的文件自动建立缓冲区,程序需为每个文件设定缓冲区。
        在传统的 UNIX 系统中,用缓冲文件系统处理文本文件,而用非缓冲文件系统处理二进制文件。由于这两种文件系统中有许多功能是重叠的,因此 ANSI C 标准建议只保留缓冲文件系统,并扩展了它的功能。这样在 ANSI C 中,缓冲文件既用于处理文本文件,又用于处理二进制文件。

💦文件类型和常用函数: 

        C 语言中没有输入/输出语句,对文件的所有操作都是用库函数实现的。下面是与文件操作有关的类型定义和常用函数的原型,这些内容可参考头文件 stdio.h。

        文件类型定义

文件操作函数原型 

💦文件的打开与关闭 :

        对文件操作的步骤一般有三步: 1.打开文件;2.对文件进行读/写:3关闭文件所谓打开文件,就是建立程序和文件之间的通信通道并为文件操作建立缓冲区。语言程序通过文件类型指针与文件建立联系,程序中的一个文件类型指针就代表一个文件文件打开后,就可以使用库函数对文件进行读/写操作了。程序结束或不再继续使用文件时要关闭文件关闭文件的目的是要释放相关的资源,如缓冲区

💦简单文件操作的例子 :

        题目1显示:在 C盘根目录下建立一个名为 abc.txt 的文本文件,从键盘输入一些字符写入该文件中,直到输入一个^Z(Ctrl+Z)为止(^Z 是键盘输入的文件结束标志)。

#include<stdio.h>
#include<stdlib.h>
int main(){
	char ch;
	FILE *fp;//定义文件类型指针
	if((fp=fopen("abc.txt","w"))==NULL){//以写方式打开文本文件 
		printf("Can not open file\n");
		exit(1);
	} 
	ch=getchar();
	while(ch!=EOF){//不是ctrl+c就循环 
		fputc(ch,fp);//写字符到文件 
		ch=getchar();//从键盘读入下一个字符 
	}
	fclose(fp);//关闭文件 
} 

        程序中的语句“ch=getchar ();”还可写成“ch-fgetc(stdin);”,其作用是从标准输入设备(键盘)读入一个字符。 

运行

        题目2: 显示题目1中建立文件abc.txt中的内容

#include<stdio.h>
#include<stdlib.h>
int main(){
	char ch;
	FILE *fp;//定义文件类型指针 
	if((fp=fopen("abc.txt","r"))==NULL){//以读方式打开文本文件 
		printf("Can not open file\n");
		exit(1);
	}	
	ch=fgetc(fp);//从文件中读入一个字符 
	while(ch!=EOF){//不是文件尾则循环 
		putchar(ch);//显示字符 
		ch=fgetc(fp);//从文件读入下一个字符 
	}
	fclose(fp);//关闭文件 
} 

运行 

           最后,希望本篇文章对你有所帮助,也希望可以支持支持博主,后续博主也会定期更新学习记录,记录学习过程中的点点滴滴。若这篇文章中有哪些不正确的内容,欢迎大家在评论区和我交流讨论!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【管理运筹学】背诵手册(五)| 动态规划

五、动态规划 基本概念 阶段&#xff08;Stage&#xff09;&#xff1a;将所给问题的过程&#xff0c;按时间或空间特征分解成若干相互联系的阶段&#xff0c;以便按次序去求解每阶段的解&#xff0c;常用字母 k k k 表示。 状态&#xff08;State&#xff09;&#xff1a;…

Ubuntu20.04 install pnpm

npm install -g pnpm referrence link: Installation | pnpmPrerequisiteshttps://pnpm.io/installation

【libGDX】使用Mesh绘制立方体

1 前言 本文主要介绍使用 Mesh 绘制立方体&#xff0c;读者如果对 Mesh 不太熟悉&#xff0c;请回顾以下内容&#xff1a; 使用Mesh绘制三角形使用Mesh绘制矩形使用Mesh绘制圆形 在绘制立方体的过程中&#xff0c;主要用到了 MVP &#xff08;Model View Projection&#xff0…

Javaweb之前后台分离开发介绍的详细解析

2.1 前后台分离开发介绍 在之前的课程中&#xff0c;我们介绍过&#xff0c;前端开发有2种方式&#xff1a;前后台混合开发和前后台分离开发。 前后台混合开发&#xff0c;顾名思义就是前台后台代码混在一起开发&#xff0c;如下图所示&#xff1a; 这种开发模式有如下缺点&a…

C++11『lambda表达式 ‖ 线程库 ‖ 包装器』

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; C修行之路 &#x1f383;操作环境&#xff1a; Visual Studio 2022 版本 17.6.5 文章目录 &#x1f307;前言&#x1f3d9;️正文1.lambda表达式1.1.仿函数的使用1.2.lambda表达式的语法1.3.lambda表达式的使用…

C/C++ 开发SCM服务管理组件

SCM&#xff08;Service Control Manager&#xff09;服务管理器是 Windows 操作系统中的一个关键组件&#xff0c;负责管理系统服务的启动、停止和配置。服务是一种在后台运行的应用程序&#xff0c;可以在系统启动时自动启动&#xff0c;也可以由用户或其他应用程序手动启动。…

win10戴尔电脑安装操作系统遇到的问题MBR分区表只能安装GPT磁盘

首先按F2启动boot管理界面 调整启动盘的启动顺序&#xff0c;这里启动U盘为第一顺序。 第一步 选择安装程序的磁盘 第二步 转换磁盘为GPT磁盘 一般出现 磁盘0和1&#xff0c;说明存在两个盘 &#xff0c;这里两个盘不是说的是C盘和D盘的问题&#xff0c;而是在物理上实际存在…

2024年度投资策略:AI大模型和半导体国产化加速

今天分享的是AI系列深度研究报告&#xff1a;《2024年度投资策略&#xff1a;AI大模型和半导体国产化加速》。 &#xff08;报告出品方&#xff1a;东方证券&#xff09; 报告共计&#xff1a;48页 前言: 行情回顾与未来展望 电子板块涨幅转正&#xff0c;信心逐渐回归。截至…

Ps:参考线

参考线 Guides用于帮助精确地定位图像或元素&#xff0c;显示为浮动在图像上的非打印线&#xff0c;可以移动或移除&#xff0c;还可以临时锁定。 Ps 中的参考线可分为三大类&#xff1a;画布参考线、画板参考线和智能参考线。 可在“首选项/参考线、网格和切片”中设置参考线的…

【Java线程通信】一窥究竟

今天我们要聊一聊Java线程通信。如果你是一个Java开发者&#xff0c;那么你肯定知道线程是Java中的一个重要概念。线程是程序执行的最小单位&#xff0c;它可以独立运行&#xff0c;也可以与其他线程共享资源。那么&#xff0c;线程之间如何进行通信呢&#xff1f;这就是我们今…

【uniapp】部分图标点击事件无反应

比如&#xff1a;点击这个图标在h5都正常&#xff0c;在小程序上无反应 css&#xff1a;也设置z-index&#xff0c;padding 页面上也试过click.native.stop.prevent"changePassword()" 时而可以时而不行&#xff0c; 最后发现是手机里输入键盘的原因&#xff0c;输…

文心一言 VS 讯飞星火 VS chatgpt (141)-- 算法导论12.1 1题

一、用go语言&#xff0c;对于关键字集合(1&#xff0c;4&#xff0c;5&#xff0c;10&#xff0c;16&#xff0c;17&#xff0c;21)&#xff0c;分别画出高度为 2、3、4、5和6的二又搜索树。 文心一言&#xff1a; 以下是用Go语言为给定的关键字集合(1, 4, 5, 10, 16, 17, 2…

马养殖场建设VR模拟实训教学平台具有灵活性和复用性

为保障养殖场生物安全&#xff0c;避免疫病传播&#xff0c;学生出入养殖场受时间和地域的限制&#xff0c; 生产实习多以参观为主&#xff0c;通过畜牧企业技术人员的讲解&#xff0c;学生被动了解生产过程。为了解决畜牧养殖实训难的问题&#xff0c;借助VR技术开展畜牧养殖虚…

CUDA与GPU编程

文章目录 CUDA与GPU编程1. 并行处理与GPU体系架构1.1 并行处理简介1.1.1 串行处理与并行处理的区别1.1.2 并行处理的概念1.1.3 常见的并行处理 1.2 GPU并行处理1.2.1 GPU与CPU并行处理的异同1.2.2 CPU的优化方式1.2.3 GPU的特点 1.3 环境搭建 CUDA与GPU编程 1. 并行处理与GPU体…

关于easy-es的聚合问题

es实体类&#xff1a; public class ChemicalES {IndexId(type IdType.CUSTOMIZE)private Long id;HighLightIndexField(fieldType FieldType.TEXT, analyzer "ik_max_word")private String name;IndexField(fieldType FieldType.KEYWORD)private List<Stri…

某60区块链安全之未初始化的存储指针实战一学习记录

区块链安全 文章目录 区块链安全未初始化的存储指针实战一实验目的实验环境实验工具实验原理实验过程 未初始化的存储指针实战一 实验目的 学会使用python3的web3模块 学会分析以太坊智能合约未初始化的存储指针漏洞 找到合约漏洞进行分析并形成利用 实验环境 Ubuntu18.04操…

Vue3 封装组件库并发布到npm仓库

一、创建 Vue3 TS Vite 项目 输入项目名称&#xff0c;并依次选择需要安装的依赖项 npm create vuelatest 项目目录结构截图如下&#xff1a; 二、编写组件代码、配置项和本地打包测试组件 在项目根目录新建 package 文件夹用于存放组件 &#xff08;以customVideo为例&a…

HTTPS攻击怎么防御?

HTTPS 简介 超文本传输安全协议&#xff08; HTTPS &#xff09;是一种通过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信&#xff0c;但利用 SSL/TLS 来加密数据包。 HTTPS 开发的主要目的&#xff0c;是提供对网站服务器的身份认证&#xff0c;保护交换数据的…

【开源】基于Vue.js的数据可视化的智慧河南大屏

项目编号&#xff1a; S 059 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S059&#xff0c;文末获取源码。} 项目编号&#xff1a;S059&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 数据模块 …

基于遗传优化的多属性判决5G-Wifi网络切换算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 .......................................................................... %接收功率、网…