C语言——一些进阶知识(三)
C语言——文件操作相关
1. 打开和关闭文件
对一个文件进行读写后必须对将其关闭。
下面列举所有可使用的打开模式:
模式 | 描述 |
---|---|
“r” | 1. 以只读的模式打开一个文本文件,从文件头开始读取 2. 该文本文件必须存在 |
“w” | 1. 以只写的模式打开一个文本文件,从文件头开始写入 2. 如果文件不存在则创建一个新的文件 3. 如果文件已存在则将文件的长度截断为 0 (重新写入的内容将覆盖原有的所有内容) |
“a” | 1. 以追加的模式打开一个文本文件,从文件末尾追加内容 2. 如果文件不存在则创建一个新的文件 |
“r+” | 1. 以读和写的模式打开一个文本文件,从文件头开始读取和写入 2. 该文件必须存在 3. 该模式不会将文件的长度截断为 0 (只覆盖重新写入的内容,原有的其他内容保留) |
“w+” | 1. 以读和写的模式打开一个文本文件,从文件头开始读取和写入 2. 如果文件不存在则创建一个新的文件 3. 如果文件已存在则将文件的长度截断为 0 (重新写入的内容将覆盖原有的所有内容) |
“a+” | 1. 以读和追加的模式打开一个文本文件 2. 如果文件不存在则创建一个新的文件 3. 读取是从文件头开始,而写入则是在文件末尾追加 |
“b” | 1. 与上面 6 种模式均可结合(“rb”, “wb”, “ab”, “r+b”, “w+b”, “a+b”) 2. 其描述的含义一样,只不过操作的对象二进制文件 |
打开方式要区分文本模式和二进制模式的原因,主要是因为换行符的问题。C 语言用
\n
表示换行符,Unix 系统用\n
,Windows 系统用\r\n
,Mac 系统则用\r
。如果在 Windows 系统上以文本模式打开一个文件,从文件读到的\r\n
将会目动转换成\n
,而写入文件则将\n
替换为\r\n
。但如果以二进制模式打开则不会做这样的转换。Unix 系统的换行符跟 C 模式是一致的,所以不管以文本模式打开还是二进制模式打开,结果都是一样的。
1 |
|
首先在该文件夹下创建一个 hello.txt
,然后运行程序。
文件读写需要通过一个缓冲区,读写之后一定要关闭文件,才能将缓冲区中的数据读入。关闭后文件指针自动失效。
2. 读写文件
fgetc
fgets
fputc
fputs
fseek
等等一系列文件操作函数,用到再看吧。
3. 标准流和错误处理
- 可以通过多种方式做错误提示,方便代码调试。
- I/O 设备也可以通过相关函数控制。
以上部分内容暂时没怎么用到,学了忘得也快,快速过了一遍有个印象,等用到了再回过头来整理。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 番茄元🍅の小窝!
评论