首页 百科知识 文件随机访问函数

文件随机访问函数

时间:2022-10-16 百科知识 版权反馈
【摘要】:对流式文件可以进行顺序读写,也可以进行随机读写。fseek函数可以改变文件的位置指针,以实现文件的随机访问。文件指针偏移量of fset是从起始位置origin到新位置之间的字节数目,当文件是结构类型时,可用sizeof确定偏移量。fseek函数一般用于二进制文件,因为文本文件要发生字符转换,计算位置时可能会发生混乱而达不到预期的目的。1.在处理文件之前,必须首先用fopen函数打开指定的文件。

9.4.5 文件随机访问函数——fseek

对流式文件可以进行顺序读写,也可以进行随机读写。如果文件指针是按字节位置顺序移动,就是顺序读写;如果可以将文件指针按需要移动到指定位置,就实现了随机读写。进行随机读写的关键在于控制文件的位置指针,在随机读写时,读取一个字节后,可直接将位置指针移动到用户指定的任一字节进行读写。

fseek函数可以改变文件的位置指针,以实现文件的随机访问。函数原型:int fseek(FILE *stream, long of fset,int origin)函数功能:按偏移量of fset和起始位置origin的值,设置与stream相绑定文件指针的指向。操作成功返回值为0,否则返回值为非0。

文件指针偏移量of fset是从起始位置origin到新位置之间的字节数目,当文件是结构类型时,可用sizeof确定偏移量。起始位置的值用0、1或2表示:0表示从文件头开始;1表示从当前位置开始;2则表示从文件末端开始。通常,“偏移量”指以起始位置为基点,向前移动的字节数,并要求位移量是长整型(long)数据,以支持大于64KB的文件。文件指针偏移量也可为负值,表示从当前位置向反方向(即向后)偏移。

如果fp是指向文件的指针, fseek函数调用可以为:

  fseek(fp,100L,0);

将文件指针移到离文件头100个字节处。

  fseek(fp,50L,1);

将文件指针移到离当前位置50个字节处。

  fseek(fp,−10L,2);

将文件指针从文件末尾向文件头方向退10个字节。

fseek函数一般用于二进制文件,因为文本文件要发生字符转换,计算位置时可能会发生混乱而达不到预期的目的。

例9-11 将文件指针移到离文件“test”开头10个字节处,然后由get函数取出文件指针指向的字符。

img569

img570

如果test磁盘文件中存放的信息是:“Testing the function of fseek”,则程序运行的结果是:第十一个字符e。

C标准函数库提供了不少有关处理文件的函数,使得文件的处理工作大为简化。文件处理的基本步骤是:

1.在处理文件之前,必须首先用fopen函数打开指定的文件。这个函数返回一个指向FILE类型的指针,并将该指针赋予一个已定义的指向FILE类型的指针变量(如fp)。通过文件指针可以实现对文件的各种操作。

2.根据对文件的不同操作,当需要从文件中读取信息时,可使用输入函数getc、fgets、fread和fscanf函数等;当需要向文件中写入信息时,可使用输出函数putc、fputs、fwrite 和fprintf函数等。

3.如果出现了错误,可以使用feof和ferror函数确定应该采取的处理方式。

4.最后应该使用fclose函数关闭文件以确保文件被正确终止和保存。

常见的编程错误9.1

●在数据文件的读写中没有指定文件指针。

●不预先检查先前存在的文件将可能导致文件内容被覆盖。

●文件的结尾只有在EOF标记被读取或被传递之后才能检测到。

●在读写入二进制文件时,指定的字节数时没有使用sizeof运算符。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈