当前位置:网站首页>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)是指程序(内存)与外部设备(键盘、显示器、磁盘、其他计算机等)进行交互的操作。几乎所有的程序都有输入与输出操作,如从键盘上读取数据,从本地或网络上的文件读取数据或写入数据等。通过输入和输出操作可以从外界接收信息,或者是把信息传递给外界。
我们可以说,打开文件就是打开了一个流。
边栏推荐
- PCL学习之滤波Filtering
- Toronto Research Chemicals加米霉素-d4说明书
- CMake installation upgrade higher version
- 安科瑞支持以太网通讯、profibus通讯嵌入式电能表APM指导性技术要求-Susie 周
- MYSQL记录、自用
- Ankerui supports Ethernet communication, profibus communication embedded energy meter APM guiding technical requirements-Susie Week
- Toronto Research Chemicals单羟基舒更葡糖钠说明书
- 39. 组合总和 && 40. 组合总和2 && 216. 组合总和3
- 场效应管Mosfet之雷卯Leiditech对应英飞凌Infineon
- Unity2D_背景粒子效果
猜你喜欢

【kali-权限提升】(4.2.7)社会工程学工具包:权限维持创建后门、清除痕迹

企业数据打通有什么好处?不同行业怎么解决数据打通难题?

Skywalking系列学习之Trace Profiling源码分析

人人都可以DIY的大玩具,宏光MINIEV GAMEBOY产品力强,出行新装备

Toronto Research Chemicals加米霉素-d4说明书

没有 accept,我可以建立 TCP 连接吗?

Don't use array.length-1 to get the last item of the array

XXE-XML外部实体注入-知识点

LoRa无线技术在物联网应用市场的概况和发展

Toronto Research Chemicals单羟基舒更葡糖钠说明书
随机推荐
MySQL笔记-06 基础SQL操作
LeetCode每日一题(321. Create Maximum Number)
倍福CX5120实现温度控制例程详细解析
分数阶混沌系统李雅普指数和分岔图
LeetCode Daily Question (321. Create Maximum Number)
Application of Acrel5000web Energy Consumption System in a College-Susie Week
matlab 神经网络 ANN 分类
PMP每日一练 | 考试不迷路-8.8(包含敏捷+多选)
C语言之实现倒置字符串的两种方法
prometheus学习3Grafana部署及基本使用
基于模糊PID控制器的水温控制系统仿真
如何从800万数据中快速捞出自己想要的数据?
Number of daffodils within a thousand
How are data integration APIs key to enterprise digital transformation?
SQL语句及索引的优化
基于Docker构建MySQL主从复制数据库
[Graphic and textual] How to reinstall Win7 system
Redis 大的情况下,key 要如何处理?
大健康产业商业供应链管理系统数字化提升产业链运作效率推动供应链标准化建设
visual studio 2022调试技巧介绍