C语言 文件操作11--文件函数再讲 fseek()和ftell()

//文件函数再讲
//fseek(),ftell(),
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>


void main(){
    //定义文件路径
    char *path = "E:\Look\b1.txt";//仅支持window
    char *path1 = "E:/Look/b1.txt";//支持window和linux
    //定义文件指针
    FILE *pf = NULL;
    //以读写方式打开文件
    pf = fopen(path1,"r+");
    //判断文件是否打开成功
    if (pf==NULL)
    {
        printf("文件打开失败! 文件路径是%s
",path1);
    }

    //int fseek(FILE *stream, long offset, int origin);
    //第一个参数stream为文件指针
    //第二个参数offset为偏移量,正数表示正向偏移,负数表示负向偏移
    //第三个参数origin设定从文件的哪里开始偏移, 可能取值为:SEEK_CUR、 SEEK_END 或 SEEK_SET
    //SEEK_SET: 文件开头
    //SEEK_CUR: 当前位置
    //SEEK_END: 文件结尾
    //其中SEEK_SET, SEEK_CUR和SEEK_END依次为0,1和2.
    //简言之:
    //fseek(fp, 100L, 0); 把stream指针移动到离文件开头100字节处;
    //fseek(fp, 100L, 1); 把stream指针移动到离文件当前位置100字节处;
    //fseek(fp, -100L, 2); 把stream指针退回到离文件结尾100字节处。

    char buf[100] = {0};
    fgets(buf, 100, pf);
    printf("输出结果%s
", buf);
    //将文件指针移动到文件末尾
    fseek(pf, 0L, SEEK_END);
    //计算出文件指针偏移量(本质上就是文件的大小)
    int num = ftell(pf);
    //函数名:ftell
    //函数原型:long ftell(FILE *stream);
    //函数功能
    //用于得到文件位置指针当前位置相对于文件首的偏移字节数。(使用fseek函数后再调用函数ftell()就能非常容易地确定文件的当前位置。)
    //约束条件
    //因为ftell返回long型,根据long型的取值范围 - 231~231 - 1( - 2147483648~2147483647),故对大于2.1G的文件进行操作时出错。
    printf("文件的大小%d个字节
", num);
    //关闭文件
    if (pf!=NULL)
    {
        fclose(pf);
    }

    system("pause");
}
原文地址:https://www.cnblogs.com/zhanggaofeng/p/5459002.html