C++与Linux基础:语言特性上的文件操作
1. 前置介绍
在之前的学习中,我们已经完成了进程篇的内容,借助 Shell 实验理解了进程和进程之间的切换。利用子程序来执行外部命令。
这里我们要学习的是 Linux 系统的文件篇。在这篇文章中,你可以认识到:
- Linux 下,一切都是文件(概念)
- C 语言中的六种打开模式
- C 语言的打开文件的操作
- 引入系统接口:系统函数打开文件操作
2. 理解 Linux 下的文件
2-1 简单的理解(狭义)
文件存储在磁盘中,磁盘是永久性存储容器,不会因为断电而导致文件消失。因此我们可以引出以下几个点:
- 我们对文件的操作就是在磁盘中读取和操作。
- 磁盘是外设,对磁盘的输入和输出就是 IO 操作。
- 盘上的文件本质是对文件的所有操作,都是对外设的输入和输出简称 IO。
2-2 深入理解
我们在之前也说过,Linux 下一切皆文件,不仅仅是磁盘里面的文件。比如我们的显示屏、键盘或者网卡,他们的本质都是文件。
在之前的文章中,我们讲了一个概念:先描述,再组织,这是很重要的概念,在这里我们也适用:我们也是通过结构体来描述这些文件,最后通过链表组织和运行他们。
当你打开一个空的文件夹的时候,这个文件是否占据内存呢? 答案是显而易见的,他还是占据内存的。尽管在 Windows 平台上显示是 0 个字节,但是其实占据空间的。这里我们指出 文件 = 属性 + 里面的数据。
接下来我们来详细讲解一下 C 语言风格的打开文件吧:
3. C 语言打开文件的模式
先看 C 语言提供了几种打开的方式吧,在学习 C 语言的时候,我们都说有三种大的方向:
- r 模式:只读模式:如果文件不存在,就无法读取。
- w 模式:写入模式:如果文件不存在,会创建一个文件。注意在写入的时候会清空之前写的内容。
- a 模式:追加模式:如果文件不存在,仍然会创建一个文件。与 w 模式不同的是:它会在文件之后追加写入。
这只是三个最基础的,我们还可以在它的后面加上一个 + 号,最后一共是三个大方向,六个模式:

带上
+号的核心意义是:开启'更新'(Update)模式,允许对同一个文件流既进行读取,又进行写入。
3-1 尝试 w 模式
我们可以来尝试用程序,来打开或者创建程序来看看:
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE* fp = fopen("log.txt", );
(fp == ) {
();
();
}
* buff = ;
(fp, , buff);
(fp);
;
}







