最近,我们已经将C语言基础的知识点已经将的差不多了,今天说一个有趣的事情:相信对于现在的我们,文件是什么我们都已经非常清楚了,比如一些常见的txt文件,Word文档,还有我们写的代码所在的文件等,电脑中很常见,但是在C语言中,你知道文件是什么吗。

C语言学习

实际上,在操作系统初期,有各种各样的硬件设备,但是这些硬件设备的接口各不相同,所以为了计算机能够对这些硬件设备操作,于是就把这些不同的硬件接口进行简化和统一化,说简单点,就是把它们看做一个个磁盘上的文件,然后对这些文件进行操作。比如显示器,显示器上的文件并不是真实存在显示器上的,而是在主机中的,而显示器自己就被当做一个文件,当我们输出数据的时候,主机就将信息输出到文件中,也就是显示器中。所以说,我们可以将显示器称为标准输出设备。

在C语言中,也是这个原理,C语言默认将scanf输入对应到了键盘上,printf对应到了显示器上。既然有默认,那么自然可以修改,不过更改起来有点麻烦,我们后面时间可以具体聊聊。

聊完C语言中这个特殊的文件,我们进入真正的文件操作,无论什么样的文件,我们一定要记住一点,所有文件的操作步骤都是三步,打开文件-》操作文件-》然后关闭文件,文件本身是具有很多属性的,所以C语言在打开文件操作的时候,会将这些文件信息一一对应到FIFE类型的结构体变量中(不知道结构体变量的可以看我上期写的内容),然后我们对文件的操作,输入输出都将会先储存在缓存中,当我们在关闭文件时,就需要将缓存中的数据取出来保存到内存中去,或者直接清空缓存,然后释放FIFE类型的结构体变量占用的内存空间,最后禁止继续对文件的操作。

文件使用流程

从上面整个流程我们可以看到,文件的打开和关闭对于文件的操作有着至关作用,所以我们在其他语言中,不论老师还是书中都会特别嘱咐,打开的文件一定要及时关闭,原因从上面就可以找到,打开状态的文件是持续占用内存和缓存的,当我们不关闭文件,那么打开的文件多了,自然就会将缓存占满,内存占满,这也就是为什么我们生活中使用Word文档时,文件过大会导致奔溃的原因之一。也是我们在存取数据库时,打开一个数据库,或者打开多个数据库不关闭就会导致数据读取速度变慢的原因之一,所以切记有开有关,才能让软件的性能更上一层楼(malloch和free不也是这个道理吗)。

当然,缓存是非常有限的,而且我们在运行软件的时候总要对这些文件进行操作,那么如果全部进行操作,我们现有的这些内存明显是不够的,尤其是我们在玩游戏时,部分游戏80多G,不可能将所有资源全部加载进来,所以这时候,系统就给我们解决了这个问题,那就是我们常说的虚拟内存,虚拟内存的原理很简单,就是将不用的塞回去,将使用的从因硬盘中复制到内存中,让CPU进行处理,当然硬盘读写比较慢,数据来回交换也是很消耗时间的,而且要是都发生在一个时间点上,是不是就将整个CPU阻塞了,这就是我们常说的卡住了。

回到主题,我们文件的操作实际上就是把文件复制到内存中处理或者内存中获取数据保存到磁盘中,而它们之间传递信息。我们一般称作文件流。是不是很形象,从一个地方像水一样流向另一个地方,而且我们把文件到内存叫做输入流,反之称为输出流。不知道听说过IO没,它就是input和output的缩写。

正常情况下,就是不把显示器当做文件的情况下,我们将文件分为两种类型,一种是二进制文件,另一种是文本文件。这里有一点要注意的,实际上就计算机而言,它们都是以二进制的形式进行储存的,所以分类只是针对我们人类而言。虽然都是二进制,但是计算机要将这两种类型表现出来,自然就要加上一些东西来区别。所以二进制类型的文件就有了文件头,用文件头来表示文件的大小,类型信息,而文本文件就没有文头。而且编码格式上区别也比较大,文本文件是基于字符编码的,比如我们常用的一些ASCII,uft8等,二进制是自定义的编码,可以选择三个字节,两个字节等,虽然它们都可以显示,但是我们平常看到二进制时,都是一串串乱码。

缓存不够

在我们使用电脑过程中,使用最多的还是文件,不同类型的文件,但是它们的原理都是我们上面所说,输入的信息是先进入缓存中的,我又说过缓存很小,尤其是还要进行分配,那么我们输入的东西太多了,岂不是缓存自动清空了,所以在学了文件流后,我就可以告诉大家,缓存快满了,数据会被存放到文件流中,最后才会进行处理或储存。

结语:这期我们讲了一些关于文件的知识点,尤其是我们的显示器也是一个文件,是不是让我们点惊讶。计算机的世界里,还有很的神秘的地方,只不过我们知道的是沧海一簇,所以在学习的过程中,不要急,要带着问题来学习,更加深入了解问题的所在。

最后,谢谢阅读。

学习编程的你,是男孩子还是女孩子 (单选)

投票 C语言基础:你知道吗,对于C语言来说,我们的显示器只是一个文件

小黄鸡软件

前天 14:41 · 科技领域创作者

最近,我们已经将C语言基础的知识点已经将的差不多了,今天说一个有趣的事情:相信对于现在的我们,文件是什么我们都已经非常清楚了,比如一些常见的txt文件,Word文档,还有我们写的代码所在的文件等,电脑中很常见,但是在C语言中,你知道文件是什么吗。

C语言学习

实际上,在操作系统初期,有各种各样的硬件设备,但是这些硬件设备的接口各不相同,所以为了计算机能够对这些硬件设备操作,于是就把这些不同的硬件接口进行简化和统一化,说简单点,就是把它们看做一个个磁盘上的文件,然后对这些文件进行操作。比如显示器,显示器上的文件并不是真实存在显示器上的,而是在主机中的,而显示器自己就被当做一个文件,当我们输出数据的时候,主机就将信息输出到文件中,也就是显示器中。所以说,我们可以将显示器称为标准输出设备。

在C语言中,也是这个原理,C语言默认将scanf输入对应到了键盘上,printf对应到了显示器上。既然有默认,那么自然可以修改,不过更改起来有点麻烦,我们后面时间可以具体聊聊。

聊完C语言中这个特殊的文件,我们进入真正的文件操作,无论什么样的文件,我们一定要记住一点,所有文件的操作步骤都是三步,打开文件-》操作文件-》然后关闭文件,文件本身是具有很多属性的,所以C语言在打开文件操作的时候,会将这些文件信息一一对应到FIFE类型的结构体变量中(不知道结构体变量的可以看我上期写的内容),然后我们对文件的操作,输入输出都将会先储存在缓存中,当我们在关闭文件时,就需要将缓存中的数据取出来保存到内存中去,或者直接清空缓存,然后释放FIFE类型的结构体变量占用的内存空间,最后禁止继续对文件的操作。

文件使用流程

从上面整个流程我们可以看到,文件的打开和关闭对于文件的操作有着至关作用,所以我们在其他语言中,不论老师还是书中都会特别嘱咐,打开的文件一定要及时关闭,原因从上面就可以找到,打开状态的文件是持续占用内存和缓存的,当我们不关闭文件,那么打开的文件多了,自然就会将缓存占满,内存占满,这也就是为什么我们生活中使用Word文档时,文件过大会导致奔溃的原因之一。也是我们在存取数据库时,打开一个数据库,或者打开多个数据库不关闭就会导致数据读取速度变慢的原因之一,所以切记有开有关,才能让软件的性能更上一层楼(malloch和free不也是这个道理吗)。

当然,缓存是非常有限的,而且我们在运行软件的时候总要对这些文件进行操作,那么如果全部进行操作,我们现有的这些内存明显是不够的,尤其是我们在玩游戏时,部分游戏80多G,不可能将所有资源全部加载进来,所以这时候,系统就给我们解决了这个问题,那就是我们常说的虚拟内存,虚拟内存的原理很简单,就是将不用的塞回去,将使用的从因硬盘中复制到内存中,让CPU进行处理,当然硬盘读写比较慢,数据来回交换也是很消耗时间的,而且要是都发生在一个时间点上,是不是就将整个CPU阻塞了,这就是我们常说的卡住了。

回到主题,我们文件的操作实际上就是把文件复制到内存中处理或者内存中获取数据保存到磁盘中,而它们之间传递信息。我们一般称作文件流。是不是很形象,从一个地方像水一样流向另一个地方,而且我们把文件到内存叫做输入流,反之称为输出流。不知道听说过IO没,它就是input和output的缩写。

正常情况下,就是不把显示器当做文件的情况下,我们将文件分为两种类型,一种是二进制文件,另一种是文本文件。这里有一点要注意的,实际上就计算机而言,它们都是以二进制的形式进行储存的,所以分类只是针对我们人类而言。虽然都是二进制,但是计算机要将这两种类型表现出来,自然就要加上一些东西来区别。所以二进制类型的文件就有了文件头,用文件头来表示文件的大小,类型信息,而文本文件就没有文头。而且编码格式上区别也比较大,文本文件是基于字符编码的,比如我们常用的一些ASCII,uft8等,二进制是自定义的编码,可以选择三个字节,两个字节等,虽然它们都可以显示,但是我们平常看到二进制时,都是一串串乱码。

缓存不够

在我们使用电脑过程中,使用最多的还是文件,不同类型的文件,但是它们的原理都是我们上面所说,输入的信息是先进入缓存中的,我又说过缓存很小,尤其是还要进行分配,那么我们输入的东西太多了,岂不是缓存自动清空了,所以在学了文件流后,我就可以告诉大家,缓存快满了,数据会被存放到文件流中,最后才会进行处理或储存。

结语:这期我们讲了一些关于文件的知识点,尤其是我们的显示器也是一个文件,是不是让我们点惊讶。计算机的世界里,还有很的神秘的地方,只不过我们知道的是沧海一簇,所以在学习的过程中,不要急,要带着问题来学习,更加深入了解问题的所在。

最后,谢谢阅读。

c语言 《显示器》,C语言基础:你知道吗,对于C语言来说我们的显示器只是一个文件...相关推荐

  1. 中秋佳节速成C语言_老九零基础学编程系列之C语言【章节1-章节5】

    前言 现在是北京时间2019.09.13 11:16 今天是月饼节啊!祝大家月饼节快乐~ 然而~作为一个本科来自生科院的工科女 为了当C语言助教 只能? 值此佳节,凿壁偷光/勤学苦练/悬梁刺骨/孙康映 ...

  2. arduino语言c,Arduino编程基础(二)——C\C++语言基础(上)

    基础篇 本章开始,将由浅入深,详细介绍开发Arduino Uno所需的基础知识与开发方法. Arduino语言 Arduino使用C/C++编写程序,虽然C++兼容C语言,但这是两种语言,C语言是一种 ...

  3. 中秋佳节速成C语言_老九零基础学编程系列之C语言【章节12-章节16】

    文章目录 章节12 13 字符串-字符数组 课题62_值的引用传递 课题63_数组函数参数 课题64 65_使用头文件 课题66_初识字符串与字符数组 课题67_get puts函数补充 课题68_字 ...

  4. c语言中输入位权1,精通C语言程序设计1-编程基础.pptx

    编程基础;什么是编程语言为什么学C语言程序与内存计算机中的数制进制转换数据在内存中的存储 ;学习编程语言之前,首先要搞清楚"编程语言"这个概念.很小的时候,父母就教我们开口说话,也 ...

  5. c++ 结构体赋值_《零基础看得懂的C语言入门教程》—(十二)结构体是这么回事

    一.学习目标 了解C语言的结构体的使用方法 了解C语言结构体的结构的赋值 了解多种C语言结构体变量的赋值方法和取值方法 目录 <零基础看得懂的C语言入门教程>--(二)简单带你了解流程 & ...

  6. R语言数据可视化 ggplot2基础4 位置与坐标系

    R语言数据可视化 ggplot2基础4 位置与坐标系 我们继续使用ggplot2::diamonds介绍position. position = "identity" ggplot ...

  7. R语言数据可视化 ggplot2基础3 添加几何对象

    R语言数据可视化 ggplot2基础3 添加几何对象 数据的统计变换 添加几何对象 数据的统计变换 添加几何对象 上一讲我们介绍的是如何创建散点图,这一讲我们介绍如何创建其他类型的图,以及怎么创建有多 ...

  8. R语言数据可视化 ggplot2基础2 创建单图层的散点图 创建facet

    R语言数据可视化 ggplot2基础2 创建单图层的散点图 创建facet 单图层散点图 单图层散点图的facet 单图层散点图 这一讲我们从最简单的散点图开始介绍ggplot2应用的基础,首先我们下 ...

  9. R语言数据可视化 ggplot2基础1 ggplot2 图形的分层语法 Layered Grammar 简介

    R语言数据可视化 ggplot2基础1 ggplot2 图形的分层语法 Layered Grammar 简介 分层语法的组成(data-stat-geom-scale-coord-facet) 用分层 ...

最新文章

  1. 使用 EOLINKER 进行接口测试的最佳路径 (下)
  2. 中国官方唯一无人车路测报告一出炉,百度股价又涨了
  3. Mathematica 对曲线进行拟合
  4. Android UI事件处理
  5. 特殊权限位set_uid set_gid   stick_bit 软链接硬链接
  6. 使用python3连接hiveserver2的方法
  7. C++工作笔记-对结构体的进一步认识
  8. 【数据结构上机练习】考试题目 3
  9. MVC.NET:提供对字体文件.woff的访问
  10. 问题四十二:怎么用ray tracing画任意圆环片段
  11. 平面设计师学习指南,平面设计都要学什么
  12. 转:使用java生成数字验证码
  13. 使用ExtendSim进行制造业仿真
  14. origin2018 柱状图_学术干货 | 科研人请收藏—Origin画出双Y轴柱状图
  15. mac安装win10_老笔记本加装1T固态硬盘,顺便安装win10 Mac双系统,真香
  16. VirtualBox安装CentOS5.5 Insert Guest Additions CD image…(HOST+D)
  17. 树莓派连接侧屏出现黑屏蓝屏解决方法
  18. 区块链安全:实现公链双花攻击的多种方法
  19. http与htpps的区别
  20. 孙悟空在大闹蟠桃园的时候,第一天吃掉了所有桃子总数一半多一个,第二天又将剩下的桃子吃掉一半多一个,以后每天吃掉前一天剩下的一半多一个,到第n天准备吃的时候只剩下一个桃子。第一天开始吃的时候一共有多少个

热门文章

  1. BNT8000仪表在一例户文件传输带宽不足问题的分析与解决实际应用
  2. 呼吸系统疾病诊断测试的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  3. Box2d源码学习十一GJK之距离的实现
  4. python脚本-caeser凯撒密码-rot13
  5. java.time 时区详解
  6. 帆软报表添加鼠标悬置行 提示
  7. 判断IP地址是否在同一个网段
  8. P1000 超级玛丽游戏 题解
  9. Python读取复杂电子表格(CSV)数据小技巧一则
  10. Java Web 获取系统信息