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);
}

原文地址:https://www.cnblogs.com/viplanyue/p/12700556.html