目录
1.fseek设置文件偏移量
2.ftell获取当前偏移量
3.rewind使文件偏移量(为0)定位到开头
4.程序验证
1.fseek设置文件偏移量
函数原型:
/* 功能:设置文件位置指针的偏移量
参数:
stream:文件指针
offset:偏移量可正可负也可为0, > 0 向后偏移; < 0 向前偏移whence:相对位置SEEK_SET 文件起始位置SEEK_CUR 文件当前位置SEEK_END 文件末尾位置(最后一个字符后面一个位置)返回值:成功:0失败:‐1 */int fseek(FILE *stream, long offset, int whence);
2.ftell获取当前偏移量
函数原型:
/* 功能:获取当前文件的偏移量参数:stream:文件指针返回值:获取当前文件的偏移量 */long ftell(FILE *stream);
3.rewind使文件偏移量(为0)定位到开头
函数原型:
/* 功能:将文件位置定位到起始位置参数:stream:文件指针返回值:无 */void rewind(FILE *stream);
fseek(fp, 0, SEEK_SET);//等价于 rewind(fp); //定位到开头
4.程序验证
#include <stdio.h>int main(int argc, char *argv[])
{FILE *fp = NULL;char buf[64] = "";fp = fopen("./file.txt", "w+");if(fp == NULL){printf("fail to fopen\n");return -1;}//通过fputs函数向文件写入数据fputs("0123456789\n", fp);//11字节fputs("ABCDEFGHIJ\n", fp);//11字节fputs("9876543210", fp);//10字节,共写入32字节//获取当前文件指针的读写位置printf("fputs offset = %ld\n", ftell(fp));//将当前文件的读写文件设置到文件的起始位置rewind(fp);//fseek(fp, 0, SEEK_SET);//等价于 rewind(fp); //定位到开头//获取当前文件指针的读写位置printf("rewind(fp) offset = %ld\n", ftell(fp));//SEEK_CUR:为当前位置(上述程序偏移到文件开头)//将当前文件的读写位置设置为SEEK_CUR+6fseek(fp, 6, SEEK_CUR); printf("SEEK_CUR+6 offset = %ld\n", ftell(fp));//读取内容while(fgets(buf, 64, fp) != NULL){printf("SEEK_CUR+6 buf = %s\n", buf);}//将当前文件的读写位置设置为倒数第3个位置fseek(fp, -3, SEEK_END); printf("SEEK_CUR-3 offset = %ld\n", ftell(fp));//读取内容while(fgets(buf, 64, fp) != NULL){printf("SEEK_END-3 buf = %s\n", buf);}//将当前文件的读写位置设置为开头第5个位置fseek(fp, 5, SEEK_SET); //读取内容printf("SEEK_SET+5 offset = %ld\n", ftell(fp));while(fgets(buf, 64, fp) != NULL){printf("SEEK_SET+5 buf = %s\n", buf);}fclose(fp); return 0;
}
运行结果: