打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C语言中文件随机读写是怎么一回事?
原创黑马程序员教程2021-02-25 11:48:59

文件操作是编程必不可少的技能,普通文件的读写大家都会,就不展开说了,今天小编带大家学习一下文件随机读写。

文件随机读写就是不按常规读写文件,想从哪儿入手就从哪儿入手,比如说,你听歌时,欸,就这几句好听,那截下来当铃声,那截取点就是随机读写的一个位置。文件随机读写呢,有3板斧,诸位请看。

1.rewind()函数

rewind()函数的作用是将文件位置指针指向文件开头,不管你的文件位置指针在哪儿指着呢,rewind()函数一出场,必须拨拉到开头。

void rewind(FILE * stream);

在rewind()函数里面,void表示这个函数没有返回值,参数stream表示一个文件指针,就是把这个文件指针指向的文件的位置指针拨拉到开头。是不是有点绕?绕就对了。stream就当作是一个文件,把stream文件的位置指针指向开头,明白了?

2.fseek()函数

fseek()函数的作用嘛,将文件位置指针指向指定的位置,比如,往前移动一些距离,往后移动一些距离,像秤上的游标一样,没见秤的,自行去百度。

int fseek(FILE * stream, long offset, int whence);

在fseek()函数里面,参数stream还是那个文件指针,参数offset表示移动的距离,参数whence表示文件位置指针原先的位置,就是从哪儿开始移动的。whence有3个取值:

  • SEEK_SET:对应的数字值为0,表示从文件开头进行偏移。

  • SEEK_CUR:对应的数字值为1,相对于文件位置指针当前位置进行偏移。

  • SEEK_END:对应的数字值为2,相对于文件末尾进行偏移。

fseek()函数如果调用成功,就返回0,调用失败返回-1。

有一点呢要注意,fseek()函数呢是随便指的,如果指到一个位置,这个位置呢是一个汉字经过字符转换来的,一个汉字对应三个字符,那么要切时候可能要把汉字切开的,这时候就乱码了,所以fseek()函数呢,最好用到二进制文件中,不要用到文本文件中。

3.ftell()函数

ftell()函数用于获取文件位置指针的当前位置,就是fseek()函数你把文件位置指针挪哪儿去了,你得告诉我一声啊,那ftell()函数呢就是告诉你文件位置指针的位置。

long ftell(FILE * stream);

在ftell()函数中,参数stream还是文件指针,ftell()函数调用成功,返回文件位置指针的当前位置,调用失败,返回-1L,就是-1。

好,学完了三板斧,实践起来用一下,先在项目目录下创建个文件,比如hello.txt,就随机读写这个hello.txt文件,上代码。

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>int main(){FILE* fp;char s[16] = { 0 };fp = fopen('hellow.txt', 'r');fseek(fp, 7, SEEK_SET);fread(s, 1, 15, fp);fclose(fp);printf('%s', s);return 0;}

关于文件随机读写呢,就这3板斧,第一板斧先把文件位置指针指向文件开头,调用rewind()函数;第二板斧调用fseek()函数移动文件位置指针;第三板斧调用ftell()函数告诉我文件位置指针在哪儿。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
关于获取yuv帧数问题
c语言获取文件大小的示例
C语言学习进程:fseek与ftell函数
C 语言读取二进制文件大小
p_get_frame_total函数指针【x264】
C语言学习教程第十章-文件(7)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服