700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > C语言文件操作:获取文件中文本的大小(长度)

C语言文件操作:获取文件中文本的大小(长度)

时间:2021-08-29 20:29:02

相关推荐

C语言文件操作:获取文件中文本的大小(长度)

1、方法

1.1 获取文件大小

ftell()函数

描述:C 库函数long int ftell(FILE *fp)返回给定流 stream 的当前文件位置。

参数:fp-- 这是指向 FILE 对象的指针,该 FILE 对象标识了流。

返回值:该函数返回位置标识符的当前值。如果发生错误,则返回 -1

声明:下面是 ftell() 函数的声明。

ftell() 函数用来获取文件内部指针(位置指针)距离文件开头的字节数,它的原型为:

long int ftell ( FILE * fp )

ftell函数使用场景1:通过fseek() 将文件内部指针定位到文件末尾,再使用 ftell() 返回内部指针距离文件开头的字节 数,这个返回值就等于文件的大小。

ftell函数使用场景2:随机方式存取文件时 , 使用 fseek 函数来回移动指针 , 不容易确定当前指针位置 , 通过调用ftell函数确定指针位置 。

1.2 但是fseek移动到末尾后,还要让他再次指向开头,以便进行文件操作

fseek()函数

fseek

函数名: fseek

功 能: 重定位流上的文件指针

用 法: int fseek(FILE *stream, long offset, int fromwhere);

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

返回值: 成功,返回0,否则返回其他值。

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);把fp指针移动到离文件开头100字节处;

fseek(fp,100L,1);把fp指针移动到离文件当前位置100字节处;

fseek(fp,100L,2);把fp指针退回到离文件结尾100字节处。

fseek(fp,0,0);把fp指针移动到离文件开头0字节处;

fseek(fp,0,1);把fp指针移动到离文件当前位置0字节处;

fseek(fp,0,2);把fp指针退回到离文件结尾0字节处。

2、实现

FILE *fp = fopen(filename, "rb");//fp 要以二进制方式打开,如果以文本方式打开,函数的返回值可能没有意义if (NULL == fp) {printf("openFileFailed\n");}/*获取文件字节大小size*/fseek(fp, 0, SEEK_END);//文件指针指向末尾int size = ftell(fp);fseek(fp, 0, SEEK_SET);//文件指针指向开头if(size > 0){printf("size: %d\n",size);}fclose(fp);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。