C语言 文件操作11--文件函数再讲 fseek()和ftell()

时间:2023-03-09 02:41:30
C语言 文件操作11--文件函数再讲 fseek()和ftell()
//文件函数再讲
//fseek(),ftell(),
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h> void main(){
//定义文件路径
char *path = "E:\\Look\\b1.txt";//仅支持window
char *path1 = "E:/Look/b1.txt";//支持window和linux
//定义文件指针
FILE *pf = NULL;
//以读写方式打开文件
pf = fopen(path1,"r+");
//判断文件是否打开成功
if (pf==NULL)
{
printf("文件打开失败! 文件路径是%s\n",path1);
} //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); 把stream指针移动到离文件开头100字节处;
//fseek(fp, 100L, 1); 把stream指针移动到离文件当前位置100字节处;
//fseek(fp, -100L, 2); 把stream指针退回到离文件结尾100字节处。 char buf[] = {};
fgets(buf, , pf);
printf("输出结果%s\n", buf);
//将文件指针移动到文件末尾
fseek(pf, 0L, SEEK_END);
//计算出文件指针偏移量(本质上就是文件的大小)
int num = ftell(pf);
//函数名:ftell
//函数原型:long ftell(FILE *stream);
//函数功能
//用于得到文件位置指针当前位置相对于文件首的偏移字节数。(使用fseek函数后再调用函数ftell()就能非常容易地确定文件的当前位置。)
//约束条件
//因为ftell返回long型,根据long型的取值范围 - 231~231 - 1( - 2147483648~2147483647),故对大于2.1G的文件进行操作时出错。
printf("文件的大小%d个字节\n", num);
//关闭文件
if (pf!=NULL)
{
fclose(pf);
} system("pause");
}