在文件 *** 作系统中,同时打开的文件个数是受限的,因此在 *** 作系统中对于文件的 *** 作专门设置了一个区域,这个区中为每个文件 *** 作开设了一块 *** 作数据区,其中每个区对应一个文件 *** 作,记录文件位置,当前文件指针位置等,如果进行文件 *** 作需要获得系统分配的一块有效的数据区,这个数据区的编号就是文件句柄,在c中是FILE *类型
*** 作数据区中,有一个文件指针,存放当前可读写文件位置,是一个字节计数值,在打开当前文件后,这个指针指向文件第1个字符,取值是0,那么如果马上读写文件都是从文件第1个字节开始,假定写入或读取了1个字节内容,文件指针在 *** 作完成后自动变为1,指向下一个可 *** 作的位置。文件指针可以顺序后移(增加值)也可以前移(减少值)当然要借助特殊函数。
假定要获取文件尺寸,可以在打开文件后(文件指针内容为0)利用文件指针 *** 作函数(比如feek)令文件指针转到文件尾部,这时文件指针取值就是文件的实际字节数了。
指向文件的指针也就是文件指针,可以用FILE来定义一个文件指针。格式如下:FILE *文件指针
FILE:文件缓冲区的类型名,必须大写
文件指针:指向文件缓冲区的指针
例如: FILE *fp // 定义一个文件指针fp
注:使用文件指针的时候,必须将头文件#include<stdio.h>包含进源文件中。
你是用C标准I/O库函数的话,(1)文件定位:
文件定位指读取或设置文件当前读写点,所有的通过文件指针读写数据的函数,都是从文件的当前读写点读写数据的。
常用的函数有:
#include <stdio.h>
int fseek(FILE *stream, long offset, int whence)
fseek 设置当前读写点到 offset 处,
whence 可以是 SEEK_SET,SEEK_CUR,SEEK_END,这些值决定是
从文件头、当前点和文件尾计算偏移量 offset.
你可以定义一个文件指针FILE *fp,当你打开一个文件时,文件指针指向开头,
你要指到多少个字节,只要控制偏移量就好,例如
相对当前位置往后移动一个字节:fseek(fp,1,SEEK_CUR)中间的值就是偏移量。
如果你要往前移动一个字节,直接改为负值就可以:fseek(fp,-1,SEEK_CUR)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)