文章目录

  • 一、ftell 函数
  • 二、使用 ftell 函数获取当前指针位置
  • 三、通过 ftell 计算文件大小

一、ftell 函数


ftell() 函数的作用是 获取文件的 当前指针位置 相对于 文件首地址 的 偏移字节数 ;

ftell 函数原型 :

#include <stdio.h>
long ftell(FILE *stream);

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

二、使用 ftell 函数获取当前指针位置


代码示例 :

  • 第一次打印指针位置 : 刚打开文件 , 还未读取数据 , 指针指向 0 位置 , 索引 0 ;
  • 第二次打印指针位置 : 跳过了 4 字节数据 , 偏移了 4 字节 , 指针指向第 5 字节 , 索引 4 ;
  • 第三次打印指针位置 : 跳过了 4 字节数据 , 又向后读取 2 字节 , 偏移了 6 字节 , 指向第七字节 , 索引 6 ;
#include <stdio.h>int main()
{// 以写文本的方式向文件中写出数据FILE *p = fopen("D:/File/number.dat", "w");// 写出 10 个字符char array[10] = {1,2,3,4,5,6,7,8,9,10};// 将 10 个字符写出到文件中fwrite(array, 1, sizeof(array), p);// 关闭文件fclose(p);// 跳过 4 字节读取文件 2 字节FILE *p2 = fopen("D:/File/number.dat", "r");// 使用 ftell 函数获取当前指针位置int location = ftell(p2);// 刚打开文件 , 还未读取数据 , 指针指向 0 位置 ★★★printf("location = %d\n", location);// 读取数据缓冲区char array2[2];// 跳过 4 字节 , 此时当前位置是 0fseek(p2, 4, SEEK_CUR);// 使用 ftell 函数获取当前指针位置location = ftell(p2);// 跳过了 4 字节数据 , 偏移了 4 字节 ,// 指针指向第 5 字节 , 索引 4 ★★★printf("location = %d\n", location);// 读取 2 字节fread(array2, 1, sizeof(array2), p2);// 打印前 2 字节数据printf("%d , %d\n", array2[0], array2[1]);// 使用 ftell 函数获取当前指针位置location = ftell(p2);// 跳过了 4 字节数据 , 又向后读取 2 字节 ,// 偏移了 6 字节 , 指向第七字节 , 索引 6 ★★★printf("location = %d\n", location);return 0;
}

执行结果 :

三、通过 ftell 计算文件大小


代码示例 : 打开文件后 , 直接使用 fseek 跳转到文件末尾 , 然后使用 ftell 获取当前指针 , 打印出指针位置 , 即可获取文件大小 ;

#include <stdio.h>int main()
{// 以写文本的方式向文件中写出数据FILE *p = fopen("D:/File/number.dat", "w");// 写出 10 个字符char array[10] = {1,2,3,4,5,6,7,8,9,10};// 将 10 个字符写出到文件中fwrite(array, 1, sizeof(array), p);// 关闭文件fclose(p);// 先打开文件FILE *p2 = fopen("D:/File/number.dat", "r");// 将文件指针移动到文件末尾fseek(p2, 0, SEEK_END);// 使用 ftell 函数获取当前指针位置int location = ftell(p2);// 通过读取当前文件指针位置, 即可获取文件大小 ★★★printf("filesize = %d\n", location);// 将文件指针恢复fseek(p2, 0, SEEK_SET);// 使用 ftell 函数获取当前指针位置location = ftell(p2);// 查看指针是否恢复 ★★★printf("location = %d\n", location);return 0;
}

执行结果 :

【C 语言】文件操作 ( ftell 函数 | 使用 ftell 函数获取当前指针位置 | 通过 ftell 计算文件大小 )相关推荐

  1. C语言——文件操作函数 fseek、ftell、rewind详解

    前言 前面,我讲了讲文件操作的第二步:文件的读写操作,里面详细的介绍了各类读写函数的用法,有兴趣的小伙伴可以去看看: C语言--文件操作(2)文件的读写操作_ 接下来,我再来讲一讲关于标题中这三个函数 ...

  2. C语言文件操作函数大全(看到总结的真的很好,就转载贡献给大家了)

    C语言文件操作函数大全 clearerr(清除文件流的错误旗标) 相关函数 feof 表头文件 #include<stdio.h> 定义函数 void clearerr(FILE * st ...

  3. ios怎么打开c语言文件操作函数,C++ ofstream和ifstream详细用法以及C语言的file用法...

    ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间; 在C++中,有一个stream这个类,所有的I/O都以这个"流"类为基础的,包括我们 ...

  4. c语言全文件操作函数,C语言文件操作函数大全

    C语言 文件操作函数大全 C语言文件操作函数 2007-10-17 19:21 13.1C语言文件 1,两种文件存取方式(输入,输出方式) 顺序存取 直接存取 2,数据的两种存放形式 文本文件 二进制 ...

  5. [C语言]文件操作函数

    [C语言]文件操作函数 ​ 本文主要学习**fopen,fclose,fgetc,fgets,fputc,fputs,fwrite,fread,feof**这几个文件操作函数. ​ 以上函数,需要导入 ...

  6. c语言 freopen txt_C语言文件操作函数freopen详解

    C语言文件操作函数freopen详解 今天做USACO 用到了文件的操作. 之前做USACO只是格式化的.些 写 freopen("xxx.in","r",st ...

  7. c语言读取文件函数,C语言文件操作详细分析:读取文件(fread函数使用)

    C语言文件操作详细分析:读取文件(fread函数使用) 这里详细介绍了C语言读取文件的函数fread的使用说明,参照了MSDN的说明,同时加入自己的经验让大家学的更加明白. C语言读取文件函数frea ...

  8. c语言生成文件可以删,C语言-文件操作下

    文件操作下 各种printf对比记忆 printf--sprintf--fprintf 都是变参函数:参数形参中有"...",最后一个固参通常是格式描述串(包含格式匹配符),函数的 ...

  9. C语言文件操作解析(二)【转载】

    http://www.cnblogs.com/dolphin0520/archive/2011/10/05/2199598.html C语言文件操作解析(二) C语言中对文件进行操作必须首先打开文件, ...

  10. C语言文件操作解析(二)

    C语言文件操作解析(二) C语言中对文件进行操作必须首先打开文件,打开文件主要涉及到fopen函数.fopen函数的原型为 FILE* fopen(const char *path,const cha ...

最新文章

  1. CCS Font 知识整理总结
  2. offsetTop,clientX,clientTop,clientWidth,offsetWidth 坐标,一次弄明白
  3. 快速目标检测--YOLO-LITE: A Real-Time Object Detection Algorithm Optimized for Non-GPU Computers
  4. VTK:IO之ImageWriter
  5. oracle轮询方式循环输出,LGWR的两种模式(POST/WAIT和POLLING)
  6. 【前端】Github Pages 与域名关联简明教程
  7. 地区的json数据_数据密集型系统基础:数据模型与查询语言
  8. html中%3c%3e括号,打开关闭大括号检查
  9. 索引深入浅出(6/10):选择正确并合适的聚集索引键
  10. Oracle收购Talari,第一家SD-WAN公有云提供商出现
  11. python_day3
  12. [Linux] BASH程序设计
  13. Swift3.0 在其它类获取Appdelegate单例的属性或则对象的值
  14. 全网最全的 JavaScript 数组各个方法用途的思维导图
  15. 微软OneDrive使用体验
  16. 人艰不拆——记在工作一个半月之后
  17. Exception: ROM is missing for ms_pacman, see https://github.com/openai/atari-py#roms for instruction
  18. Word标题跟随正文样式缩进的解决办法
  19. Cesium实时目标跟踪最新特效教程系列1—实时发亮直线跟踪移动目标
  20. 教你如何从官网下载ipp,并在vs里面跑起来

热门文章

  1. 51单片机课程设计——led点阵广告牌程序设计
  2. matlab 附录 周开利,【新书推荐】【2005.07】神经网络模型及其MATLAB仿真程序设计(周开利)...
  3. 神经网络仿真实验matlab,神经网络及其matlab实现
  4. 解决ichat模块调用过程中——登录微信网页版失败的方法
  5. vfp 使用 .Net 系统自带的组件
  6. 详解Unity中的射线与射线检测
  7. linux下安装Oracle10g RAC操作--根据[三思笔记]操作
  8. 暴风影音3 Build version : 3.7.11.13 漏洞
  9. poi导出excel设置对应格式
  10. 时钟模块ds1302的使用