文件操作管理(上)讲完了文件的顺序读写,那么现在我们来学一学文件的随机读写。
文件的随机读写:
要学会这一知识点,这三个函数必不可少。它们是:fseek、ftell、rewind。
fseek函数是通过指针的位置和偏移量来定位文件指针。它的声明如下:
int fseek ( FILE * stream, long int offset, int origin );
第一个参数是流,第二个参数是偏移量,第三个参数是当前的位置。现在我在test.txt文本文件中写入abcdef。如果想要直接读取文件中的c字符,我们就可以使用fseek函数。
SEEK_CUR ->当前位置
SEEK_END->文件的末尾 SEEK_SET->文件的开始
这段代码是从文件的开头进行读取数据,当fget读取到一个字符后会跳转到下一个字符(文件指针向后移动一位) 。
ftell:返回文件指针相对于起始位置的偏移量。
long int ftell ( FILE * stream );
函数使用方式如下:
重置文件指针使它回到初始位置,可以使用rewind
void rewind ( FILE * stream );
文本文件和二进制文件:
根据数据的组织形式,数据文件被称为文本文件或者二进制文件。 数据在内存中以二进制的形式存储,如果不加转换的输出到外存,就是二进制文件。 如果要求在外存上以ASCII码的形式存储,则需要在存储前转换。以ASCII字符的形式存储的文件就是文 本文件。
它们存储形式的区别就是:列如数字10000,一个是二进制存在内存中,一个是字符形式存放。
文件缓冲区:
在写文件的时候,操作系统不会把输出的数据直接放在硬盘中,而是先存到输出缓存区。等到数据积攒到一定的数量后再从输出缓存区放到硬盘中去。(同理读文件)
有一个函数ffflush可以用来刷新缓存区,是缓存区的数据进入相应的空间。fclose函数也可以实现缓存区的刷新,使数据不会遗漏在缓存区中,防止数据的流失,可见fclose关闭文件的重要性!
讲到这文件管理就全部结束了,希望大家多多支持!