当前位置:网站首页>C语言中的文件是什么?
C语言中的文件是什么?
2022-08-09 19:55:00 【nginx】
在操作系统中,为了统一对各种硬件的操作,简化接口,不同的硬件设备也都被看成一个文件。对这些文件的操作,等同于对磁盘上普通文件的操作。例如:
- 通常把显示器称为标准输出文件,printf 就是向这个文件输出数据;
- 通常把键盘称为标准输入文件,scanf 就是从这个文件读取数据。
我们不去探讨硬件设备是如何被映射成文件的,大家只需要记住,在C语言中硬件设备可以看成文件,有些输入输出函数不需要你指明到底读写哪个文件,系统已经为它们设置了默认的文件,当然你也可以更改,例如让 printf 向磁盘上的文件输出数据。操作文件的正确流程为:打开文件 --> 读写文件 --> 关闭文件。文件在进行读写操作之前要先打开,使用完毕要关闭。
所谓打开文件,就是获取文件的有关信息,例如文件名、文件状态、当前读写位置等,这些信息会被保存到一个 FILE 类型的结构体变量中。关闭文件就是断开与文件之间的联系,释放结构体变量,同时禁止再对该文件进行操作。
在C语言中,文件有多种读写方式,可以一个字符一个字符地读取,也可以读取一整行,还可以读取若干个字节。文件的读写位置也非常灵活,可以从文件开头读取,也可以从中间位置读取。
文件流
在《》一文中提到,所有的文件(保存在磁盘)都要载入内存才能处理,所有的数据必须写入文件(磁盘)才不会丢失。数据在文件和内存之间传递的过程叫做文件流,类似水从一个地方流动到另一个地方。数据从文件复制到内存的过程叫做输入流,从内存保存到文件的过程叫做输出流。
文件是数据源的一种,除了文件,还有数据库、网络、键盘等;数据传递到内存也就是保存到C语言的变量(例如整数、字符串、数组、缓冲区等)。我们把数据在数据源和程序(内存)之间传递的过程叫做数据流(Data Stream)。相应的,数据从数据源到程序(内存)的过程叫做输入流(Input Stream),从程序(内存)到数据源的过程叫做输出流(Output Stream)。
输入输出(Input output,IO)是指程序(内存)与外部设备(键盘、显示器、磁盘、其他计算机等)进行交互的操作。几乎所有的程序都有输入与输出操作,如从键盘上读取数据,从本地或网络上的文件读取数据或写入数据等。通过输入和输出操作可以从外界接收信息,或者是把信息传递给外界。
我们可以说,打开文件就是打开了一个流。
边栏推荐
猜你喜欢
Byte side: Can TCP and UDP use the same port?
DSPE-PEG-Azide, DSPE-PEG-N3, phospholipid-polyethylene glycol-azide can react directly with DBCO
3D感知(二):单目3D物体检测
QGIS编译SIP的问题
leetcode二叉搜索树与双向链表
Ankerui supports Ethernet communication, profibus communication embedded energy meter APM guiding technical requirements-Susie Week
微软word怎么转换成pdf文件?微软word转换为pdf格式的方法
Definition and Basic Operations of Linear Tables
分数阶混沌系统李雅普指数和分岔图
Win11搜索不到文件的解决方法
随机推荐
Js查找字符串中出现最多次数的字母和单词
访问控制知识
URL Protocol 网页打开应用程序
【kali-密码攻击】(5.1.1)密码在线破解:Hydra(图形界面)
2.2 监督学习-1
基于光通信的6G水下信道建模综述
基于模糊PID控制器的水温控制系统仿真
继承关系下构造方法的访问特点
STM32WB55的FUS更新及协议栈固件烧写方法
poj 3070 Fibonacci(简单矩阵连乘)
visual studio 2022调试技巧介绍
PMP daily practice | didn't lost a 8.9 (including agile + multi-select)
LoRa无线技术在物联网应用市场的概况和发展
leetcode 二叉树的分层遍历1
Redis 大的情况下,key 要如何处理?
source install/setup.bash时出现错误
力扣15-三数之和——HashSet&双指针法
DSPE-PEG-Azide, DSPE-PEG-N3, phospholipid-polyethylene glycol-azide can react directly with DBCO
WPF中加载并使用图像资源
[Deep learning] pix2pix GAN theory and code implementation