文件的随机读写函数:fseek

目录

函数介绍:

fseek:

原型:

 参数说明:

int origin:

举例:

文件内容展示:

 正常的使用fgetc函数:

结果:

使用了fseek之后:

SEEK_SET :从开始位置进行偏移指针

结果:

 SEEK_END :从末端开始偏移指针

结果:

SEEK_CUR :从当前位置开始偏移

结果:


函数介绍:

fseek:

根据文件指针的位置和偏移量来定位文件指针,是一个读取函数。

原型:

int fseek ( FILE * stream, long int offset, int origin );
 参数说明:
  • FILE *stream:打开文件的文件指针
  • long int offset:表示偏移量或者偏移值。
  • int origin:开始偏移的位置。

在三个参数中,其实最重要的是 int origin 这个参数。

int origin:

开始偏移的位置,在这个函数中分为三种,分别是:

  • 数据的起始位置 SEEK_SET 
  • 数据的末端位置 SEEK_END
  • 当前文件指针所指向的位置:SEEK_CUR

其中当前所指向的位置,这个说法来自于http://t.csdn.cn/cEqD7中的fgetc的函数内涵

举例:

文件内容展示:

 文件的随机读写函数:fseek_第1张图片

 正常的使用fgetc函数:
int main()
{
  int arr[10] = {0};
  FILE* pf = fopen("data.txt","r");
  if (pf == NULL)
    {
       perror("fopen");
       return 1;
    }

//读文件,并设置变量接收读取的数据
  int ch = fgetc(pf);
//打印读取的数据
  printf("%c\n",ch);

  fclose(pf);
  pf = NULL;
  return 0;
}
结果:

文件的随机读写函数:fseek_第2张图片

解读: 更具fgetc的特性,一次只能读取一个字符,所以当前读取的只能是字符a,并且当准备使用fgetc再次读取时,会读取下一个字符b,因为fgetc内部会设置一个指针专门用来读取字符的。

详情:http://t.csdn.cn/6iUhz

使用了fseek之后:
SEEK_SET :从开始位置进行偏移指针
int main()
{
  int arr[10] = {0};
  FILE* pf = fopen("data.txt","r");
  if (pf == NULL)
    {
       perror("fopen");
       return 1;
    }

//进行读取偏移
  fseek(pf,6,SEEK_SET);

//读文件,并设置变量接收读取的数据
  int ch = fgetc(pf);
//打印读取的数据
  printf("%c\n",ch);

  fclose(pf);
  pf = NULL;
  return 0;
}

  fseek(pf,6,SEEK_SET); 从文件数据开头的位置进行偏移,偏移了6个偏移值。

注意,偏移值是从0开始的,所以应该是七个位置,或者说偏移七个位置抵达偏移值是6的位置。

结果:

文件的随机读写函数:fseek_第3张图片

 SEEK_END :从末端开始偏移指针
int main()
{
  int arr[10] = {0};
  FILE* pf = fopen("data.txt","r");
  if (pf == NULL)
    {
       perror("fopen");
       return 1;
    }

//进行读取偏移
  fseek(pf,-3,SEEK_END); 

//读文件,并设置变量接收读取的数据
  int ch = fgetc(pf);
//打印读取的数据
  printf("%c\n",ch);

  fclose(pf);
  pf = NULL;
  return 0;
}

fseek(pf,-3,SEEK_END);  从文件数据的未端进行偏移,偏移-3个位置,也就朝左变进行偏移,从左往右的负数偏移值是直接从-1开始。

结果:

文件的随机读写函数:fseek_第4张图片

SEEK_CUR :从当前位置开始偏移
int main()
{
  int arr[10] = {0};
  FILE* pf = fopen("data.txt","r");
  if (pf == NULL)
    {
       perror("fopen");
       return 1;
    }


//读文件,并设置变量接收读取的数据
  int ch = fgetc(pf);
//打印读取的数据
  printf("%c\n",ch);

//进行读取偏移
  fseek(pf,5,SEEK_CUR);
  int ch = fgetc(pf);
  printf("%c\n",ch);

  fclose(pf);
  pf = NULL;
  return 0;

}

使用了fgetc的特性,将文件内部指针的位置进行更改,在使用fseek函数中的SEEK_CUR当前位置进行偏移,也就是当前位置的偏移值是0,往后在偏移6个位置,抵达偏移值5的位置。

结果:

文件的随机读写函数:fseek_第5张图片

你可能感兴趣的:(数据存储,文件操作,C语言,算法,c语言,文件操作,数据存储,函数)