信奥竞赛

系列

剑指信奥 | C 语言之 X 档案

The X-Files

「X档案」是一部非常精彩的科幻题材美剧,从九十年代起风靡全球,一直延续至今。

这部剧贯穿始终的都是一些神祕、灵异之类,科学和常理很难解释的超自然现象,有兴趣的同学不妨一看。

The X-Files | Wikipedia

今天,我们不讨论「X档案」的剧情,我们关注的是片名中的这个词 —— File。

在英文中,File 可以翻译为档案,但更加常见的一个含义是文件,对,它就是我们今天课程的主角。

什么是文件?

文件并不是一个高深的概念,泛指各种类型的存储信息的文档:

日常生活中的文件

但特定到了计算机科学中,文件有着特殊的定义和重要的作用:

计算机文件(或称文件、电脑档案、档案),是存储于某种长期储存设备或临时存储设备中的一段数据流,并且归属于计算机文件系统管理之中。

所谓长期储存设备一般指磁盘、光盘、磁带等。而短期存储设备一般指计算机内存。

Wikipedia

可以说,计算机中,除了硬件以外,所有的内容都以文件的形式存储在机器的各种硬件之内,文件是特定格式数据的载体。

存放数据的文件

文件有什么作用?

我们知道了文件是什么,那么文件到底有什么作用呢?

刚刚,我们谈到了存储文件的计算机硬件,就拿最为常见的磁盘和内存来说明吧。

当我们编写好程序,开始运行时,所有的数据都存在于计算机的内存之中,无论这些数据有多么重要,一旦程序执行完成,所有的数据都不见了...

短期存放数据的内存

所以,如果我们需要保存重要的数据,就需要把这些数据以文件的方式存放在能够长期保存数据的计算机硬盘上,以便我们将来打开文件,再次使用这些数据。

长期存放文件的磁盘

还有,就像我们之前讲过的输入语句 scanf,可以让我们用键盘手动向程序输入数据,但这种情况一般都是数据量比较小时候,因为手动输入很慢,还容易出错,所以数据量大的时候,手动输入数据就不合适了。

怎么办?

还是用文件,把所有需要输入的数据以一定的格式存储在文件上,通过操作文件的方式,将数据输入到程序中,既便捷,又准确。

再有,如果我们要把一份数据从一台计算机传到另外一台机器,也要把数据存放在文件中。

转移文件的 U 盘​

文件的类型

在计算机科学中,我们的文件按存储内容一般分为两种类型。

一种被称之为文本文件 text file,文本文件中存储的内容都是各种语言文字,都是可以直接被人们阅读的。

文本文件

另一种被称为二进制文件 binary file,类似于图片,音频,视频这些文件,都是以二进制的方式存储的,直接打开是无法读懂的,只有用特定的软件才能将内容呈现出来。

二进制文件

文件的操作

在程序中,通常需要对文件进行各种处理,常见的有这些:

  • 创建一份新的文件
  • 向文件中写入信息
  • 读取文件中的信息
  • 关闭已打开的文件

以上这些处理文件的过程,在计算机语言中,统称为文件操作。

而对于我们关注的信息学竞赛而言,文件操作也是一个必须要学会的内容,为什么这么说?

我们将在下次课以一道典型的信奥试题为例,详述 C 语言中文件的操作。

日积月累

  • file 文件
  • text 文本
  • binary 二进制