🌏个人博客:尹蓝锐的博客
希望文章能够给到初学的你一些启发~ 如果觉得文章对你有帮助的话,点赞 + 关注+ 收藏支持一下笔者吧~
fseek函数
int fseek ( FILE * stream, long int offset, int origin );
- 重新定位流位置指示器将与流关联的位置指示器设置到新位置。
- 对于以二进制模式打开的流,新位置是通过向原点指定的参考位置添加偏移量来定义的。
- 对于以文本模式打开的流,偏移量应为零或之前调用ftell返回的值,原点必须为SEEK_SET。
- 如果使用这些参数的其他值调用函数,则支持取决于特定的系统和库实现(不可移植)。
- 成功调用此函数后,流的文件结束内部指示符将被清除,并且之前调用ungetc对此流的所有影响都将被删除。
- 在打开进行更新(读+写)的流上,调用fseek可以在读和写之间切换。
起始点(int origin) | 名字 | 用数字代表 |
文件开始位置 | SEEK_SET | 0 |
文件当前位置 | SEEK_CUR | 1 |
文件末尾位置 | SEEK_END | 2 |
简单应用:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
FILE* fp;
char str[10];
char ch = 0;
int n;
fp = fopen("myfile.txt", "w");
printf("%d\n", ftell(fp));//光标值为0
fputs("abc", fp);
printf("%d\n", ftell(fp));//光标值为3
fclose(fp);
fp = fopen("myfile.txt", "a+");//以追加方式打开文件,光标值从文件结尾处开始
fprintf(fp, "%d", 28);
printf("%d\n", ftell(fp));//光标值为5
fseek(fp, -2, 1); //光标从当前位置向后移2位,光标值变为3
printf("%d\n", ftell(fp));
ch = fgetc(fp); //因为调用了一次fgetc函数所以,光标值又往后移一位
printf("%c\n", ch);
printf("%d\n", ftell(fp));//光标值为4
rewind(fp); //重置光标值
printf("%d\n", ftell(fp));//光标值为0
fscanf(fp, "%s", str);
puts(str);
fclose(fp);
return 0;
}
输出结果:
如果我的博客能给您带来启发,请不吝点赞、评论和收藏,也欢迎您关注我的博客。
如果你喜欢这篇文章,别忘了留下你的感想和建议,让我知道你的想法。同时,也请继续关注我的博客,我们不见不散!
最后,愿每一位读到这里的你,都能拥有一个充实而美好的每一天。不管世界怎样变化,保持学习,保持热爱,保持对生活的好奇心,我们的故事,还在继续……