文章目录
- 一、前言
- 二、文件的打开和关闭
- 1. fopen函数
- 2. fclose函数
- 三、文件的顺序读写
- 四、文件的随机读写
- 1. fseek函数
- 2. ftell函数
- 3. fwind函数
一、前言
程序运行时,数据存放在内存中,而当程序退出后,数据也就不复存在。
想做到数据持久化,我们可以把数据存放在磁盘,或者放到数据库里。
而在C语言中,利用文件操作,就可以将数据存放在电脑的硬盘上。
程序设计中,文件一般分两种:程序文件、数据文件。
- 程序文件
- 源文件(.c)
- 目标文件(windows环境后缀为.obj)
- 可执行文件(windows环境后缀为.exe)
- 数据文件
- 程序运行时,要从中读写数据的文件。
二、文件的打开和关闭
读写之前应该先打开文件,使用结束之后要关闭文件。
1. fopen函数
FILE * fopen ( const char * filename, const char * mode );
fopen
函数用于打开文件。filename
是要打开的文件名,mode
是文件的使用方式。FILE
是描述文件信息的结构体类型,在头文件stdio.h
中定义- 打开文件后,函数返回
FILE*
类型的文件指针。
需要注意,在字符串中表示\
时,必须使用转义字符\\
。
所以filename
应该如下图所示:
文件名由文件路径、文件名主干和文件后缀三个部分组成。
例如对于E:\test.txt
来说:
E:\
是文件路径test
是文件名主干.txt
是文件后缀
如果filename
中省略文件路径,只写文件名主干和文件后缀的话,文件会默认保存在本工程的目录下。
文件的使用方式有以下这些:
- 文本文件是指以ASCII码形式存储的文件,每个字符占1个字节。
- 如10000这个数据以文本文件形式存储,那么每个数字看作一个字符,总共占5个字节。
- 二进制文件是指数据以二进制形式存储的文件。
- 如10000这个数据以二进制文件形式存储,那么只需将10000转换成二进制存入内存中就行了。
2. fclose函数
int fclose ( FILE * stream );
fclose
函数用于关闭文件。stream
是要关闭的文件的文件指针。fclose
函数关闭文件后不会置空文件指针,需手动置空。
三、文件的顺序读写
C语言提供了一系列文件输入输出函数。
注意,这里的输入是从文件中读内容,输出是往文件里写内容。
每个函数的具体用法可以查阅文档学习。
四、文件的随机读写
1. fseek函数
int fseek ( FILE * stream, long int offset, int origin );
- 文件在读写时,文件指针指向的位置是会随着读写而改变的。
fseek
函数可以用于将文件指针定位到我们想要的位置。stream
是文件指针,offset
是我们想要设置的文件指针的偏移量。origin
是从哪里开始偏移,我们可以设置为SEEK_SET
(文件起始位置)、SEEK_CUR
(文件指针当前位置)、SEEK_END
(末尾)。
2. ftell函数
long int ftell ( FILE * stream );
- 该函数用于返回文件指针相对于起始位置的偏移量。
- 我们可以利用
ftell
函数来获取文件指针当前的位置。
3. fwind函数
void rewind ( FILE * stream );
- 该函数用于让文件指针回到文件的起始位置。