文件操作是编程必不可少的技能,普通文件的读写各位都会,就不展开说了,今天小编带各位学习一下文件随机读写。
文件随机读写就是不按常规读写文件,想从哪儿入手就从哪儿入手,例如说,你听歌时,欸,就这几句好听,那截下来当铃声,那截断偷取点就是随机读写的一个地点。文件随机读写呢,有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()函数跟你说我文件地点指针在哪儿。