【C 语言】文件操作 ( ftell 函数

您所在的位置:网站首页 c语言中file*fp是什么意思 【C 语言】文件操作 ( ftell 函数

【C 语言】文件操作 ( ftell 函数

2023-07-23 06:17| 来源: 网络整理| 查看: 265

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

一、ftell 函数

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

ftell 函数原型 :

#include long ftell(FILE *stream);

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

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

代码示例 :

第一次打印指针位置 : 刚打开文件 , 还未读取数据 , 指针指向 0 位置 , 索引 0 ;第二次打印指针位置 : 跳过了 4 字节数据 , 偏移了 4 字节 , 指针指向第 5 字节 , 索引 4 ;第三次打印指针位置 : 跳过了 4 字节数据 , 又向后读取 2 字节 , 偏移了 6 字节 , 指向第七字节 , 索引 6 ; #include 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 字节 , 此时当前位置是 0 fseek(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 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; }

执行结果 :

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3