C语言 文件操作(六)
一.fseek()
int fseek(FILE * stream, long offset, int whence);
1.参数stream 为已打开的文件指针。
2.参数offset 是偏移量,该参数表示要从起始点开始要移动的距离,干参数必须是一个long类型的值,可以为正(前移),可以为负(向后移),或者为0(保持不动)。
3.参数 whence 是模式,该参数确定起始点。根据ANSI标准,在stdio.h头文件中规定了几个表示模式的明示标量
模式 | 偏移量的起始点 |
---|---|
SEEK_SET | 文件开始处 |
SEEK_CUR | 文件当前位置 |
SEEK_END | 文件末尾 |
二.ftell()
long ftell(FILE * stream);
对于二进制文件,则返回从文件开头到结尾的字节数。
对于文本文件,返回的数值可能没有实际意义,但仍然可以用来保存当前的读写位置,供 fseek() 函数使用
eg:
#include <stdio.h>
#include <stdlib.h>
/*本程序功能:
从 f 盘下的文本文件 lanyue.txt 中读取第一个,最后一个,中间数据并分别输出
*/
int main()
{
FILE *fp = fopen("f:\\lanyue.txt","r");
int num;
fseek(fp,0,SEEK_SET); //指针从0开始,获取第一个数据
num = fgetc(fp);
putchar(num);
fseek(fp,-1,SEEK_END); //指针从结尾开始,因为最后一个字符为结束字符,所以需要将指针左移一位
num = fgetc(fp);
putchar(num);
fseek(fp,-(ftell(fp) / 2) - 1,SEEK_CUR); //当前指针为结尾,向左移动一半则为中间数据
num = fgetc(fp);
putchar(num);
fclose(fp);
return(0);
}