获取文件大小

fseek设置文件指针stream的位置

原型:int fseek(FILE *stream, long offset, int fromwhere);

用法:#include <stdio.h>

功能:如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置,函数返回0。
如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置,函数返回一个非0值。

说明:fromwhere:(偏移起始位置:文件头0(SEEK_SET),当前位置1(SEEK_CUR),文件尾2(SEEK_END))

ftell得到文件位置指针当前位置相对于文件首的偏移字节数

原型:long ftell(FILE *stream);

用法:#include <stdio.h>

功能:用于得到文件位置指针当前位置相对于文件首的偏移字节数。

说明:使用fseek函数后再调用函数ftell()就能非常容易地确定文件的当前位置。

注意:因为ftell返回long型,根据long型的取值范围-231~231-1(-2147483648~2147483647),故对大于2.1G的文件进行操作时出错。

例程

#include<stdio.h>
#include<stdlib.h>

void main(){

    //文件路径
    char* path = "D:\\test.png";

    //打开文件,返回文件的指针,b代表是二进制文件
    FILE* f_read = fopen(path, "rb");

    //文件是否成功打开
    if (f_read == NULL){
        printf("文件打开失败");
        return;
    }

    //类似于多线程下载的概念,首先将文件长度按N段分,然后将每段文件读取并写入到相应的临时文件
    fseek(f_read, 0L, SEEK_END);//seek到文件的结尾,0L代表向前偏移几个字节
    long len = ftell(f_read);//返回当前的文件指针相对于文件开头的位移量
    printf("%ld", len);

    //关闭文件
    fclose(f_read);

    system("pause");
}

results matching ""

    No results matching ""