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);//关闭文件 
} 

运行 

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

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

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

相关文章

C++的new / delete 与 C语言的malloc/realloc/calloc / free 的讲解

在C语言中我们通常会使用malloc/realloc/calloc来动态开辟的空间&#xff0c;malloc是只会开辟你提供的空间大小&#xff0c;并不会初始化内容&#xff1b;calloc不但会开辟空间&#xff0c;还会初始化&#xff1b;realloc是专门来扩容的&#xff0c;当你第一次开辟的空间不够用…

目标检测YOLO实战应用案例100讲-基于YOLO的小目标检测改进算法(续)

目录 3.3基于混合注意力的多尺度特征融合改进方法 3.3.1整体网络架构 3.3.2特征金字塔的构建

Vue 2.0源码分析-实例挂载的实现

Vue 中我们是通过 $mount 实例方法去挂载 vm 的&#xff0c;$mount 方法在多个文件中都有定义&#xff0c;如 src/platform/web/entry-runtime-with-compiler.js、src/platform/web/runtime/index.js、src/platform/weex/runtime/index.js。因为 $mount 这个方法的实现是和平台…

Python 使用tkinter复刻Windows记事本UI和菜单功能(三)

上一篇&#xff1a;Python 使用tkinter复刻Windows记事本UI和菜单功能&#xff08;二&#xff09;-CSDN博客 下一篇&#xff1a;敬请耐心等待&#xff0c;如发现BUG以及建议&#xff0c;请在评论区发表&#xff0c;谢谢&#xff01; 本文章完成了记事本的新建、保存、另存、打…

【技巧】前端开发技巧 增加前端的请求缓存 提高开发效率

定义变量 /*** 开发缓存 开关* 说明* 方便开发使用 提升开发效率* true 打开缓存* false 关闭缓存 这里上线的时候必须改为* type {boolean}*/ const cacheFlag true/*** 排除某个url 方便开发时的数据实时生效* 这里根据开发到哪个功能 实时变更&#xff0c; 比如开…

京东数据分析(京东大数据):2023年10月京东手机行业品牌销售排行榜

鲸参谋监测的京东平台10月份手机市场销售数据已出炉&#xff01; 根据鲸参谋平台的数据显示&#xff0c;今年10月份&#xff0c;京东平台手机行业的销量约340万&#xff0c;环比增长约11%&#xff0c;同比则下滑约2%&#xff1b;销售额为108亿&#xff0c;环比增长约17%&#x…

请你说一下Vue中v-if和v-for的优先级谁更高

v-if 与 v-for简介 v-ifv-forv-if & v-for使用 v-if 与 v-for优先级比较 vue2 中&#xff0c;v-for的优先级高于v-if 例子进行分析 vue3 v-if 具有比 v-for 更高的优先级 例子进行分析 总结 在vue2中&#xff0c;v-for的优先级高于v-if在vue3中&#xff0c;v-if的优先级高…

RubyMine 2023:提升Rails/Ruby开发效率的强大利器

在Rails/Ruby开发领域&#xff0c;JetBrains RubyMine一直以其强大的功能和优秀的性能而备受开发者的青睐。现如今&#xff0c;我们迎来了全新的RubyMine 2023版本&#xff0c;它将为开发者们带来更高效的开发体验和无可比拟的工具支持。 首先&#xff0c;RubyMine 2023提供了…

Java-使用poi-tl根据word模板动态生成word

作者wangsz&#xff0c;想写一些关于word的工具&#xff0c;所以就写了这篇文章 1.首先&#xff0c;先导入所需要的依赖&#xff08;poi相关依赖即可&#xff09; <!-- POI --><dependency><groupId>org.apache.poi</groupId><artifactId>poi&l…

【libGDX】使用Mesh绘制立方体

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

目标检测YOLO系列从入门到精通技术详解100篇-【目标检测】计算机视觉(最终篇)

目录 知识储备 KITTI数据集 1.KITTI数据集概述 2.数据采集平台 3.Dataset详述 算法原理

GIT无效的源路径/URL

ssh-add /Users/haijunyan/.ssh/id_rsa ssh-add -K /Users/haijunyan/.ssh/id_rsa

windows11上enable WSL

Windows电脑上要配置linux&#xff08;这里指ubuntu&#xff09;开发环境&#xff0c;主要有三种方式&#xff1a; 1&#xff09;在windows上装个虚拟机&#xff08;比如vmware&#xff09;。缺点是vmware加载ubuntu后系统会变慢很多&#xff0c;而且需要通过samba来实现window…

git clone -mirror 和 git clone 的区别

目录 前言两则区别git clone --mirrorgit clone 获取到的文件有什么不同瘦身仓库如何选择结语开源项目 前言 Git是一款强大的版本控制系统&#xff0c;通过Git可以方便地管理代码的版本和协作开发。在使用Git时&#xff0c;常见的操作之一就是通过git clone命令将远程仓库克隆…

【vue2】axios请求与axios拦截器的使用详解

&#x1f973;博 主&#xff1a;初映CY的前说(前端领域) &#x1f31e;个人信条&#xff1a;想要变成得到&#xff0c;中间还有做到&#xff01; &#x1f918;本文核心&#xff1a;当我们在路由跳转前与后我们可实现触发的操作 【前言】ajax是一种在javaScript代码中发请…

低代码开发与IT开发的区别

目录 一、含义不同 二、开发门槛不同 三、两者之间的区别 1、从技术特征来看 2、从目标开发者来看 四、低代码平台使用感受&#xff1f; &#xff08;1&#xff09;自定义模块&#xff0c;满足不同的业务需求 &#xff08;2&#xff09;工作流引擎&#xff0c;简化复杂流程的管…

机器学习实战-第4章 基于概率论的分类方法: 朴素贝叶斯

朴素贝叶斯 概述 贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。本章首先介绍贝叶斯分类算法的基础——贝叶斯定理。最后,我们通过实例来讨论贝叶斯分类的中最简单的一种: 朴素贝叶斯分类。 贝叶斯理论 & 条件概率 贝叶斯理论 …

linux网络之网络层与数据链路层

文章目录 一、网络层 1.IP协议 2.IP协议头格式 3.网段划分 4.特殊ip地址 5.IP地址的数量限制 6.私有ip和公网IP 7.路由 二、数据链路层 1.以太网 2.以太网帧格式 3.MAC地址 4.对比理解MAC地址和IP地址 5.MTU 6.ARP协议 ARP协议的工作流程 ARP数据报的格式 7.DNS 8.ICMP协议 9.N…

839 - Not so Mobile (UVA)

题目链接如下&#xff1a; Online Judge 这道题刘汝佳的解法极其简洁&#xff0c;用了20来行就解决了问题。膜拜…… 他的解法如下&#xff1a;天平&#xff08;UVa839紫书p157&#xff09;_天平 uva 839_falldeep的博客-CSDN博客 我写了两个&#xff08;都很冗长&#xff…

浅谈电气设备的绝缘在线监测与状态维修探究

贾丽丽 安科瑞电气股份有限公司 上海嘉定 201801 摘要&#xff1a;在线监测是控制好电气设备绝缘的重要方式&#xff0c;为电力系统稳定奠定重要基础。在线监测电气设备时&#xff0c;要利用检测技术促进电力系统运行效率提升&#xff0c;让电气设备在具体工作过程中发挥更大作…