C语言中的文件是什么?

我们对文件的概念已经非常熟悉了,比如常见的 Word 文档、txt 文件、源文件等。文件是数据源的一种,最主要的作用是保存数据。

在操作系统中,为了统一对各种硬件的操作,简化接口,不同的硬件设备也都被看成一个文件。对这些文件的操作,等同于对磁盘上普通文件的操作。例如:

	通常把显示器称为标准输出文件,printf 就是向这个文件输出数据;通常把键盘称为标准输入文件,scanf 就是从这个文件读取数据。

常见硬件设备所对应的文件

在这里插入图片描述
在C语言中硬件设备可以看成文件,有些输入输出函数不需要你指明到底读写哪个文件,系统已经为它们设置了默认的文件,当然你也可以更改,例如让 printf 向磁盘上的文件输出数据。

操作文件的正确流程为:打开文件 --> 读写文件 --> 关闭文件。文件在进行读写操作之前要先打开,使用完毕要关闭。

所谓打开文件,就是获取文件的有关信息,例如文件名、文件状态、当前读写位置等,这些信息会被保存到一个 FILE 类型的结构体变量中。关闭文件就是断开与文件之间的联系,释放结构体变量,同时禁止再对该文件进行操作。

在C语言中,文件有多种读写方式,可以一个字符一个字符地读取,也可以读取一整行,还可以读取若干个字节。文件的读写位置也非常灵活,可以从文件开头读取,也可以从中间位置读取。

文件流

文件(保存在磁盘)要载入内存才能处理,所有的数据必须写入文件(磁盘)才不会丢失。数据在文件和内存之间传递的过程叫做文件流,类似水从一个地方流动到另一个地方。数据从文件复制到内存的过程叫做输入流,从内存保存到文件的过程叫做输出流。

文件是数据源的一种,除了文件,还有数据库、网络、键盘等;数据传递到内存也就是保存到C语言的变量(例如整数、字符串、数组、缓冲区等)。我们把数据在数据源和程序(内存)之间传递的过程叫做数据流(Data Stream)。相应的,数据从数据源到程序(内存)的过程叫做输入流(Input Stream),从程序(内存)到数据源的过程叫做输出流(Output Stream)。

输入输出(Input output,IO)是指程序(内存)与外部设备(键盘、显示器、磁盘、其他计算机等)进行交互的操作。几乎所有的程序都有输入与输出操作,如从键盘上读取数据,从本地或网络上的文件读取数据或写入数据等。通过输入和输出操作可以从外界接收信息,或者是把信息传递给外界。

我们可以说,打开文件就是打开了一个流。

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

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

相关文章

knn(k近邻算法)——matlab

目录 1. 基本定义 2. 算法原理 2.1 算法优缺点 2.2 算法参数 2.3 变种 3.算法中的距离公式 4.案例实现 4.1 读取数据 4.2 分离训练集和测试集 4.3 归一化处理 4.4 计算欧氏距离 4.5 排序和输出测试结果 4.6 计算准确率 总代码 1. 基本定义 k最近邻(k-Nearest N…

C语言打开文件详解

C语言中操作文件之前必须先打开文件;所谓“打开文件”,就是让程序和文件建立连接的过程。 打开文件之后,程序可以得到文件的相关信息,例如大小、类型、权限、创建者、更新时间等。在后续读写文件的过程中,程序还可以记…

python turtle虎年来拜年了

1.画个虎 # codingutf-8 from turtle import * import timeCOLOR #B2814Ddef set_start(x, y, w, cCOLOR):penup()setx(x)sety(y)setheading(towards(0, 0))width(w)pencolor(c)pendown()speed(0)def left_rotate(time, angle, length):for i in range(time):left(angle)forwa…

TOPSIS法 —— matlab

目录 1.TOPSIS法介绍 2. 计算步骤 (1)数据标准化 (2)得到加权后的矩阵 (3)确定正理想解和负理想解 (4)计算各方案到正(负)理想解的距离 (…

TOPSIS法 —— python

目录 1.TOPSIS法介绍 2. 计算步骤 (1)数据标准化 (2)得到加权后的矩阵 (3)确定正理想解和负理想解 (4)计算各方案到正(负)理想解的距离 (…

C语言随机读写文件

实现随机读写的关键是要按要求移动位置指针,这称为文件的定位。 文件定位函数rewind和fseek 移动文件内部位置指针的函数主要有两个,即 rewind() 和 fseek()。 rewind() 用来将位置指针移动到文件开头,前面已经多次使用过,它的…

mysql-installer安装教程(详细图文)

目录 1.安装 2.配置系统环境变量 3.配置初始化my.ini文件 4.MySQL彻底删除 5.Navicat 安装 1.安装 先去官网下载需要的msi,在这放出官网下载地址下载地址 这里我具体以8.0.28 为安装例子,除了最新版安装界面有些变动以往的都是差不多的。 过去的版本…

Java三种随机数生成方法

java的三种随机数生成方式 随机数的产生在一些代码中很常用,也是我们必须要掌握的。而java中产生随机数的方法主要有三种:     第一种:new Random()     第二种:Math.random()     第三种:currentTimeMil…

Python MySQL入门连接

目录 基本环境准备 navicat的傻瓜使用方式 python连接 mysql安装教程:传送门 基本环境准备 WINR 输入cmd回车打开cmd,登录mysql: mysql -h localhost -u root -p然后输入密码回车即可。 创建用户名为testuser1: CREATE USER testuser1…

JDBC连接sql server数据库

IDEA使用JDBC连接Sqlserver数据库 在IDEA的项目中添加对应数据库的jar包 在项目中创建util包和DBUtil类用来存放数据库连接的java代码。 完整代码 package com.hnpi.util;import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; …

Python MySQL创建表

目录 一、创建表 二、检查表是否存在 三、关键字 一、创建表 在库student环境下创建表名为stu: # codinggbk #连接 import pymysqlmydb pymysql.connect(host"localhost", #默认用主机名port3306,user"root", #默认用户名password"123456"…

JDBC连接 Mysql数据库

IDEA使用JDBC连接Mysql数据库 在项目中添加连接Mysql数据库的jar包 在项目中创建util包和DBUtil类用来存放数据库连接的java代码。 完整代码 package com.zsh.util;import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import…

Python MySQL插入表

目录 1.插入表格 2.插入多行 3.获取插入的 ID 1.插入表格 要在 MySQL 中填充表,请使用“INSERT INTO”语句。 “stu”表中添加一条记录: 代码: # codinggbk #连接 import pymysqlmydb pymysql.connect(host"localhost", #默认…

Python MySQL选择

目录 1.从表中选择 2.选择列 3.使用 fetchone() 1.从表中选择 要从 MySQL 中的表中进行选择,请使用“SELECT”语句。从“stu”表中选择所有记录,并显示结果: # codinggbk #连接 import pymysqlmydb pymysql.connect(host"localhos…

Eclipse编辑器字体大小的设置

我们在第一次使用 Eclipse 编写程序时,由于 Eclipse 默认使用的是 Cosnolas 字体,字号为 10,所以编辑器中的字体非常小,不方便查看。 我们可以通过下面所示的方法来修改编辑器的字体大小。 操作方法: 1 . 选择“窗口…

Python MySQL查询在哪里(where)

目录 一.用过滤器选择 二.通配符 三.防止 SQL 注入 一.用过滤器选择 从表中选择记录时,可以使用“WHERE”语句过滤选择。例如:选择名字为”笨小孩“的记录:结果: # codinggbk #连接 import pymysqlmydb pymysql.connect(hos…

Python MySQL排序

目录 顺序排序 按 DESC逆序排序 顺序排序 使用 ORDER BY 语句按升序或降序对结果进行排序。ORDER BY 关键字默认对结果进行升序排序。要按降序对结果进行排序,请使用 DESC 关键字。 按名称的字母顺序对结果进行排序: # codinggbk #连接 import pymys…

Python MySQL删除

目录 删除记录 防止 SQL 注入 删除记录 您可以使用“DELETE FROM”语句从现有表中删除记录。例如删除地址为“笨小孩”的任何记录: # codinggbk #连接 import pymysqlmydb pymysql.connect(host"localhost", #默认用主机名port3306,user"root&q…

Python MySQL更新表

目录 更新表 防止 SQL 注入 更新表 您可以使用“UPDATE”语句更新表中的现有记录。将地址栏从“Valley 345”改写为“Canyoun 123”: # codinggbk #连接 import pymysqlmydb pymysql.connect(host"localhost", #默认用主机名port3306,user"root…

Python MySQL合并

目录 创建新表 表中添加数据 连接两个或多个表 左连接 右连接 创建新表 创建表名为product # codinggbk #连接 import pymysqlmydb pymysql.connect(host"localhost", #默认用主机名port3306,user"root", #默认用户名password"123456",…