一、文件
1.1定义
文件指存储在外部介质上的数据集合。
为了简化各种设备的操作
,
使用户不必区分各种设备之间的区别
,
操作系统
把各种设备都统一作为文件
来处理
。从操作系统的角度看
,
每一个输入输出设备都是一个文件。其中键盘是标准输入设备
,
其文件标识
符为
”stdin”,
屏幕是标准输出设备
,
其文件标识符为
”stdout”。
数据如流水一样从一处流向另一处
,因此常将输入输出的数据称为数据流。数据从文件
(
外存
)
流向内存称为输入流
,
数据从内存流向文件
(
外存
)
称为输出流。
1.2文件名
文件要有一个唯一的文件标识
,
以便用户识别和使用。 文件标识包括三部分:文件路径
+文件名主干
+文件后缀名。文件后缀名的作用为关联操作系统打开该类型文件的默认应用程序。
1.3文件分类
根据数据的组织形式
,
文件可以分为二进制文件和文本文件。
二进制文件
:
数据在内存中是以二进制形式存储的
,
如果不加转换直接保存到文件中
,
就是二进制文件。常见的二进制文件有图片文件,音频文件
,视频文件,
可执行程序文件等。这些文件都不能利用记事本直接查看,
必须依赖特定应用程序解析
,
例如
mp3
音频文件必须通过
mp3
播放器才能播放。
文本文件:
也称为
ASCII
文件
,
存放每个字符的编码。常见的如
”.txt”
文件。
一个数据在文件中如何存储呢
?
例如数字
123456
。
如果在文本文件中则存储字符
1,
字符
2,
字符
3,
字符
4,
字符
5,
字符
6
的编码共
6
字节。
如果在二进制文件中
,
数字
123456
为整型占用
4
字节。存储如下
:
二进制文件不需要转换
,
读写时更节约时间
,
相比文本文件也更节约空间
,
所以二进制文件使用最广
泛。
二、打开与关闭文件
2.1fopen()
文件指针也称文件类型指针
,
用于保存每个打开的文件信息
,
同一时间系统中打开的所有文件的文件指针都是独一无二的,
文件指针可以看作是文件操作的唯一标识。在
C
代码中用
”FILE *”
表示。通俗理解
,
类似学号,
以后对文件的各种操作都是通过文件指针访问。
FILE *fopen(const char *filename,const char *mode);
2.1.1说明
fopen
函数
:
创建或打开文件。
2.1.2参数
filename:
需要创建或者打开的文件名
;
注意文件路径中如果有'\'
需要进行转义(在字符串中的'\'应该写成'\\')。
mode:
打开文件的方式。常见的有读
”r”,
写
”w”,
二进制读
”rb”,
二进制写
”wb”
等
,
其它方式请查看帮助手
册。
注意
”w”
和
”wb”
打开的文件如果已经存在则清空原文件的数据再打开
,
如果文件不存在则创建一个新
文件并打开。
”r”
和
”rb”
打开文件时该文件必须存在否则打开失败。
分析:
w:
创建失败
,
主要原因
,
路径错误
.
例如
"D:\1.txt"
错误路径
r:
以读打开
,
失败原因
,1.
文件不存在
,2
文件已经被打开
b:
操作二进制文件
,
二进制数据不能直接查看
2.1.3返回值
打开成功则为打开文件的文件指针
,
失败则为
NULL
。
文件打开后
,
可以通过文件指针操作该文件。文件操作结束记得关闭文件
,
否则会出现内存泄漏。
2.2 fclose()
int fclose(FILE *stream);
2.2.1说明
fclose
函数
:
用于关闭打开的文件。
2.2.2参数
stream:
需要关闭的文件指针。
例如
,
在
D
盘创建一个新文件
#include <stdio.h>
#include <assert.h>
int main()
{
FILE* fw = fopen("D:\\1.txt", "w");
assert(fw != NULL);//断言文件打开成功
//文件操作过程省略......
fclose(fw); //关闭文件
return 0;
}