fseek( fp, SEEK_SET, SEEK_END );的作用?以及如何获取一个文件的大小?

目录

        一、fseek(fp,SEEK_SET,SEEK_END);的作用?

1.offset表示文件指针的偏移量

2.whence表示偏移量的基准位置

二、如何获取一个文件的大小


一、fseek( fp, SEEK_SET, SEEK_END );

fseek函数用于设置文件指针的位置,它的原型如下:

/*fseek函数原型*/
int fseek(FILE *stream, long offset, int whence);

其中,stream表示文件指针,offset表示文件指针的偏移量,whence表示偏移量的基准位置。

1.offset表示文件指针的偏移量

SEEK_SET:基准位置为文件开头,即offset表示距离文件开头的偏移量。

SEEK_CUR:基准位置为文件当前位置,即offset表示距离文件当前位置的偏移量。 

SEEK_END:基准位置为文件末尾,即offset表示距离文件末尾的偏移量。

2.whence表示偏移量的基准位置

当whence为SEEK_SET时,offset表示距离文件开头的偏移量;

当whence为SEEK_CUR时,offset表示距离文件当前位置的偏移量;

当whence为SEEK_END时,offset表示距离文件末尾的偏移量。

在本代码中,fseek被用来将文件指针指向文件末尾,具体的代码如下:

/*将文件指针指向文件末尾*/
fseek( fp, SEEK_SET, SEEK_END );

其中,fp为文件指针,SEEK_SET和SEEK_END分别表示偏移量的基准位置为文件开头和文件末尾。因此,这句代码的作用是将文件指针fp指向文件末尾的位置。这个操作的目的是为了获取文件的大小,因为文件大小可以通过文件末尾的偏移量计算出来。

二、如何获取一个文件的大小

fseek函数的作用是设置文件指针的位置,通过offset和whence参数的组合,可以实现对文件指针的灵活定位。在本代码中,通过将whence设置为SEEK_END,将offset设置为0,实现了将文件指针指向文件末尾的目的,从而可以通过ftell函数获取文件大小。代码如下:

/*获取文件大小函数*/
unsigned long get_file_size(const char *filename)  
{  
    unsigned long size;   // 声明一个变量size,表示文件的大小 
    FILE* fp = fopen( filename, "rb" );      // 以只读方式打开文件,指针fp指向文件开头
    if(fp==NULL)          // 如果打开文件失败,则输出错误信息,返回0
    {  
        printf("ERROR: Open file [%s] failed.\n", filename);  
        return 0;  
    }  
    fseek( fp, SEEK_SET, SEEK_END );        // 将指针fp指向文件末尾
    size=ftell(fp);       // 获取指针fp当前位置相对于文件开头的偏移量,即文件大小
    fclose(fp);           // 关闭文件
    return size;          // 返回文件大小
}

fseek( fp, SEEK_SET, SEEK_END );的作用?以及如何获取一个文件的大小?_第1张图片

笔记共享,随手一赞是对我最大的支持,希望以上内容对你有所帮助; 

你可能感兴趣的:(C/C++知识点记录,c语言,开发语言,c++)