C语言:文件IO
目录
文件IO
数据存储的硬件介绍
文件
文件操作
1、打开文件
1.1参数介绍
1.2打开方式
1.3返回值
2、文件写入
2.1参数介绍
2.2返回值
3.文件读取
3.1参数介绍
3.2返回值
4.操作判断
4.1功能
4.2参数介绍
4.3返回值
5.读取判断
5.1功能
5.2参数介绍
5.3返回值
6.位置跳转
6.1功能
6.2参数介绍
6.3返回值
7.关闭文件
7.1功能
7.2参数介绍
7.3返回值
文件IO
IO:可以分为两种:input和output(IO),代表着文件的输入输出。
input:输入,代表先硬盘输入数据。
output:输出,将数据写入外部设备。
文件IO:在C语言中主要指的是硬盘的IO。
数据存储的硬件介绍
硬盘(磁盘):存储数据的硬件,拥有持久性,意味着断电后数据依然存在。
内存条:吞吐量更大的存储硬件,具有易失性,意味着断电后数据消失不见。
所以从功能和性质上而言,我们将硬盘作为数据的持久化存储地段,将内存条作为数据处理的中间地带。
文件
文件的提出:为了对存储在硬件中的数据加以区分和便于数据的管理,我们从上层的角度提出了新的概念叫做:文件。我们将通过文件来对数据进行应用层面的管理。
文件的操作:以文件为单位对磁盘进行操作。
当我们通过程序对文件进行操作时,我们首先需要使用程序文件描述出来,通过这些描述性内容对磁盘指定位置的数据进行操作。
文件操作
1、打开文件
FILE *fopen(char *filename, const char *mode);
1.1参数介绍
其中,filename是文件名,代表着用户对文件的一种区分;mode是文件的打开方式(打开方式决定了对文件进行的操作)。
1.2打开方式
r:以只读方式打开文件;(若文件不存在会出错)
w:以只写的方式打开文件;(若文件不存在会自动创建新文件,若文件已经存在则会清空文件原有内容)
a:以追加写的方式打开文件;(若文件不存在会创建新文件,若文件已经存在则写入数据时总是会将新的数据追加到文件末尾)
r+:以可读可写的方式打开文件;(若文件不存在就可以出错,若文件已经存在会从文件起始位置进行操作,会覆盖文件原有内容)
w+:以可读可写的方式打开文件;(若文件不存在会创建新文件,若文件已经存在则会清空文件原有内容)
a+:以可读和追加写的方式打开文件;(若文件不存在会创建新文件,若文件已经存在则写入数据时总是将新的数据追加文件末尾)
b:以二进制形式打开文件,默认是以文本的形式打开。(在文本模式下,\n操作会被解释为\r\n,代表换行和光标移动)
……
无论通过以上任何一种的打开方式,文件打开后,默认的读写位置都在文件内容的起始位置。(注意a和a+是以从末尾开始追加)
1.3返回值
文件打开成功则会返回文件流指针,即文件的操作句柄;文件打开失败则返回NULL。
2、文件写入
size_t fwrite(const char *buffer, size_t size, size_t count, FILE *stream);
2.1参数介绍
其中,buffer 是一块内存空间的首地址,表示把该空间的数据写入到文件之中;
size是该块内存空间的大小;count是块空间的个数;(size * count便是将buffer中多少的数据写入到文件之中,即写入数据总量)
stream是fopen返回的文件流指针,标识我们需要操作哪一个文件。
2.2返回值
文件写入成功返回文件的完整块个数, 失败返回小于count大小的数字。
3.文件读取
size_t fread(void *buffer, size_t size, size_t count, FILE *stream);
3.1参数介绍
其中,buffe是一块内存空间的首地址,表示从文件读取到的数据放到内存buffer这块空间之中。
size是该块内存空间的大小;count是块空间的个数;(size * count便是实际中读取到的数据,即读取数据总量)
stream是fopen返回的文件流指针,标识我们需要操作哪一个文件。
3.2返回值
读取成功则返回设定的全部完整块个数(count),失败则返回读取到的完整快个数。
值得注意的是,我们在使用fread读取数据的时候,可以将size设置为1,将count设置为需要读取的数据长度。
如此只要读取到数据则返回值总是大于0的,否则当返回值为0(没有读取到一个完整的内存块)的时候我们无法确定是否读取到数据。
4.操作判断
int ferror(FILE *stream);
4.1功能
用于判断上一步文件操作是否成功,通常可以用于fread之后判断文件是否读取成功。
4.2参数介绍
stream是fopen返回的文件流指针,标识我们需要操作哪一个文件。
4.3返回值
成功则返回true(非0),失败则返回false。
5.读取判断
int feof(FILE *stream);
5.1功能
用于判断当前读取的文件内容(或者读写的文件内容)是否到达文件末尾。
5.2参数介绍
stream是fopen返回的文件流指针,标识我们需要操作哪一个文件。
5.3返回值
到达文件末尾则返回true(非0),未到达则返回false。
6.位置跳转
int fseek(FILE *stream, long offset, int origin);
6.1功能
将文件的读写位置进行跳转,即从origin位置偏移offset个字节处。(断点续传)
6.2参数介绍
其中,stream是fopen返回的文件流指针,标识我们需要操作哪一个文件;offset是偏移量;origin是相对偏移的起始位置。
6.3返回值
成功则返回0,失败则返回非0。
7.关闭文件
int fclose(FILE *stream);
7.1功能
关闭文件,释放资源
7.2参数介绍
stream是fopen返回的文件流指针,标识我们需要操作哪一个文件。
7.3返回值
成功则返回0。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
