C语言:文件操作

article/2025/8/27 19:40:30

标题

    • 文件
      • 什么是文件:
    • 文件指针
    • 文件缓冲区
    • 操作文件
      • 1.文件的打开与关闭函数
      • 2.文本行输入输出函数
      • 3.格式化输入输出函数(有格式的数据输入到文件中)
      • 4.二进制输入输出
      • 调整文件指针位置
      • 6.ftell与rewind
      • 7.文件结束的判定

程序退出,内存上的数据销毁,将信息放在文件中,保证持久保存

文件

什么是文件:

在磁盘或者固态硬盘上的一段已命名的存储区

分类:
从文件功能的角度

  • 程序文件:源程序文件,目标文件,可执行程序
  • 数据文件:文件的内容不一定是程序,而是程序运行时读写的数据

根据数据的组织形式

  • 二进制文件:以二进制方式存储
  • 文本文件:以ASCII码的形式存储
    在文件中,看到10000这个数字是字符1,0,0,0,0的ASCII码值,是文本文件

常见处理数据的输入输出都是以终端为对象的,即从终端的键盘输入数据,运行结果显示到显示器上。
将信息输出到磁盘上,需要时再从磁盘上把数据读取到内存中使用,这里处理的就是磁盘上文件。

文件在执行时内存所需要做的工作

文件指针

每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放该文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。
这些信息是保存在一个结构体变量中。该结构体类型是有系统声明的,取名FILE(文件指针)
在这里插入图片描述

FILE* pf定义一个文件指针

  • printf、scanf两个函数叫标准输入输出函数,这里标准的含义就是:输出是打印到
    屏幕,输入是从键盘上获取数据,
  • 文件的读写->是输入和输出的重定向
    (重定向的意思就是:重新定义其输入输出方向,这是相对标准而言)

文件缓冲区

程序要读文件或写文件时,系统会为当前操作自动创建一块内存区域,这块内存区域乘为文件缓冲区

  • 从内存向磁盘输出数据,
    先送至内存中的缓冲区,充满缓冲区后,才一起送到磁盘上;
  • 从磁盘向计算机读入数据
    则从磁盘文件中读取数据输入到内存缓冲区(充满缓冲区),然后再从缓冲区逐个将数据送到程序数据区;
  • 要想及时输出就需要刷新缓冲区,例如\n,就是一种刷新缓冲区的方式;

在这里插入图片描述缓冲区的大小根据c编译系统决定。

操作文件

1.文件的打开与关闭函数

在这里插入图片描述
在这里插入图片描述

  • b代表操作二进制文件
  • +代表增加读写功能
  • 只有w才能创建不存在的文件,并且w是覆盖写

2.文本行输入输出函数

在这里插入图片描述

3.格式化输入输出函数(有格式的数据输入到文件中)

在这里插入图片描述

在这里插入图片描述

4.二进制输入输出

从左往右执行
fwrite (&s, sizeof(struct s), 1, pf)
//被写入信息地址,一个元素的大小,写几个元素,要写入的哪个文件流中

调整文件指针位置

以当前位置为起点,根据偏移量调整pf文件指针
在这里插入图片描述
向前偏移offset<0,向后偏移offset>0

6.ftell与rewind

ftell文件指针的位置在哪
在这里插入图片描述

7.文件结束的判定

EOF:end of file,文件结束的标记

feof()

  • 不是判断文件是否结束,而是判断文件是因什么原因结束

文本文件读取结束

  1. fgetc判断是否为EOF;
  2. fgets判断返回值是否为NULL;

二进制文件读取结束

  • fread判断返回值是否小于实际要读的个数;

ferror():测试流上是否有一个错误
perorr(”随便一个字符串”),打印结果:“字符串:出错误信息”


http://chatgpt.dhexx.cn/article/3egpPOsD.shtml

相关文章

c语言字节写入文件,C语言文件操作

所谓文件(file)一般指存储在外部介质上数据的集合,比如我们经常使用的mp3、mp4、txt、bmp、jpg、exe、rmvb等等。这些文件各有各的用途,我们通常将它们存放在磁盘或者可移动盘等介质中。那么,为什么这里面又有这么多种格式的文件呢?原因很简单,它们各有各的用途,区分就在…

C语言之编程基础

学自C语言中文网 编程基础 一.编程语言二. C语言的地位三.C语言是菜鸟和大神的分水岭三.C语言和C的关系四.数据在内存中的存储五.载入内存&#xff0c;让程序运行起来六.虚拟内存七. ASCII编码 一.编程语言 通过使用某种“语言”的固定格式和固定词汇来控制计算机的行为, 而这…

matlab中的graythresh函数的实例

一个图足以说明所有问题&#xff0c;代码实例加输出结果&#xff0c;说明一个问题&#xff0c;graythresh()函数还是很不错的&#xff01; 如果还想跟精确&#xff0c;就在该阈值的周围在试几组数组&#xff0c;找到自己觉得最优的阈值

基于MATLAB的数字图像分割的研究与实现

1 绪论 1.1 图像分割的研究背景 在一幅目标图像下&#xff0c;人们往往只是关注其中的一个或者几个目标&#xff0c;而这些目标必然会占据一定的区域&#xff0c;并且与周围其他目标或背景在一些特征上会有相应的差别。但是&#xff0c;很多时候这些差别会非常的细微&#xff0…

一天一个小技巧(4)——利用Python和MATLAB进行图片二值化

转载请注明作者和出处&#xff1a;https://blog.csdn.net/qq_28810395 Python版本&#xff1a; Python3.x 运行平台&#xff1a; Windows 10 IDE&#xff1a; Pycharm profession 2019 Matlab2010a 一、前言 由于在一些软件和处理上都仅要求是黑白图片&#xff0c;那么掌握一种…

matlab nlfilter 填充方式,MatLab实验步骤(超杰版)

图像变换--灰度调整、滤波增强---二值化(阈值分割)--形态学处理--特征提取 一&#xff1a;色彩变换&#xff0c;从颜色上控制思考怎样应用灰度的变换、滤波变换减少地物 直方图均衡化histeq自适应均衡化adapthisteq灰度调节(灰度映射)imadjust【直接变换、非线性变换、灰度映射…

基于Matlab车牌自动识别

灰度变换 灰度图是指将黑色和白色以对数的关系分为256阶的图像。灰度化处理就是将彩色图片通过处理转化为灰度图的过程。彩色图像一般由三个独立色组成&#xff0c;R、G、B三个分量分别显示出红、绿、蓝。灰度化处理就是使R、G、B三个分量相等。灰度值为255的点就是白色&#x…

【MATLAB Image Processing Toolbox 入门教程七】“导入、导出和转换”之“图像类型转换Ⅱ——使用阈值法转换为二值图像”

【MATLAB Image Processing Toolbox 入门教程七】 1 imbinarize函数1.1 imbinarize函数使用语法及说明1.2 imbinarize函数参数说明1.3 imbinarize函数使用示例1.3.1 使用全局阈值和局部自适应阈值对图像二值化1.3.2 检测前景比背景暗的图像 2 graythresh函数3 otsuthresh函数4 …

matlab graythresh3,Matlab—影像分析进阶

在这篇文章里面我们要做的事情全部都围绕两个问题,一个图像当中有多少个 xxx,他们的大小是多少,举个例子 上图是一个米的影像,这张图片里有很多的米,现在我们的问题是,这里面有多少米,他们的大小是多少? graythresh() & im2bw() 要回答上述两个问题,首先要做的是对…

matlab graythresh()函数使用的注意点

用matlab进行图像处理时&#xff0c;经常会遇到设置一个阈值将灰度图处理为二值图的情况。 一般都会这样子 Iimread(1.jpg); levelgraythresh(I); BWim2bw(I,level); 这里就有一个小坑了 比如1.jpg这个读入的图片&#xff0c;每一个像素位置的灰度都是整型。但是你强行转成了…

2.23学习心得 Matlab graythresh函数 形态学开闭操作,腐蚀膨胀的作用

关于graythresh 函数 函数功能&#xff1a;使用 最大类间方差法找到图片的一个合适的阈值&#xff08;threshold&#xff09;。在使用 im2bw函数将灰度图像转换为二值图像时&#xff0c;需要设定一个阈值&#xff0c;这个函数可以帮助我们获得一个合适的阈值。利用这个阈值通常…

graythresh

使用Otsu方法计算全局图像阈值 语法&#xff1a; T graythresh(I) [T,EM] graythresh(I)说明&#xff1a; T graythresh(I) 使用 Otsu 方法 &#xff0c; 根据灰度图像 I 计算全局阈值 T。Otsu 方法选择一个阈值&#xff0c;使阈值化的 黑白像素的类内方差最小化。全局阈值…

软件测试题目

单项选择题&#xff1a;共20小题&#xff0c;每小题1 分&#xff0c;满分20分&#xff1b;请将答案填入题后括号中。 1. 在软件生命周期的哪一个阶段&#xff0c;软件缺陷修复费用最低 &#xff08; A &#xff09; &#xff08;A&#xff…

软件测试题1

单选题 1、系统测试使用&#xff08;C&#xff09;技术, 主要测试被测应用的高级互操作性需求, 而无需考虑被测试应用的内部结构。 A、 单元测试 B、 集成测试 C、 黑盒测试 D、白盒测试 2、单元测试主要的测试技术不包括&#xff08;B &#xff09; A、白…

软件测试题

以题会题 一、单选题 1、对软件进行测试的根本目的是什么&#xff1f;&#xff08; C &#xff09; A、提高软件的质量 B、确保程序符合用户的需求 C、找出程序中的缺陷 D、确保程序没有缺陷 2、在软件生命周期哪个阶段&#xff0c;软件缺陷修复费用最低&#xff1f;&#xf…

软件测试期末考试题

一、单项选择题&#xff08;每小题2分&#xff0c;共21530分&#xff09; 1、软件测试的目的&#xff08; C&#xff09; A&#xff0e;避免软件开发中出现的错误 B&#xff0e;发现软件开发中出现的错误 C&#xff0e;尽可能早地发现并排除软件中潜藏的错误&#xff0c;提高软…

100道软件测试练习题,看看你能有多少分

软件测试与质量保证-软件测试部分练习题 1单选(2分) 软件测试用例主要由输入数据和_________两部分组成。 A.预期输出结果2.00/2.00 B.测试计划 C.以往测试记录分析 D.测试规则 2单选(2分) 与设计测试用例无关的文档是_________。 A.项目开发计划2.00/2.00 B.源程序 …

杨辉三角python小代码

刚刚上机课&#xff0c;老师居然让我们打印杨辉三角&#xff1f;&#xff1f; 结果 def yangHuiSanJiao(n):#打印第一行和第二行print("1".center(50))next_line [1,1]second_line .join([str(i) for i in next_line])print(second_line.center(50))for i in rang…

【5分钟力扣】118.杨辉三角 python

文章目录 一、题目二、解题思路三、三种解题示例 一、题目 给定一个非负整数 numRows&#xff0c;生成杨辉三角的前 numRows 行。 在杨辉三角中&#xff0c;每个数是它左上方和右上方的数的和。 示例: 输入: 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1] ]二、解题思…

蓝桥杯-杨辉三角形-python

题目 可以结合目录来理解文章~ 原始方法 这个方法可以拿到40分。N数值比较大的时候&#xff0c;运行时间会超过限制。 思路 逐行生成杨辉三角&#xff0c;找到了需要的N以后就停止循环&#xff0c;并输出对应的位置。 变量解释 用于计算N的位置的公式如下&#xff1a; po…