C文件之四 文件的随机读/写


                                                        文件的随机读/写
           要实现文件随机读写, 位置指针的随机移动是关键, 也就是文件位置指针可以根据读写 需要可以方便的定位到文件的任意位置。
           设定文件内部位 置指针的函数主要有两个,即rewind函数和?fseek函数。
          rewind(文件指针):   它的功能是把文件内部的位置指针移到文件首。
          fseek函数用来移动文件内部位置指针,其调用形式为:
          fseek(文件指针,位移量,起始点)
   其中:
   “ 文件指针” 指向被移动位置指针的文件类型指针。
   “ 位移量”    表示移动的字节数,要求位移量是long型数据,以便在文件长度大于64KB时不会出错。当用常量表示位移量时,要求加后缀“L” 。
   “ 起始点”    表示从何处开始计算位移量,规定的起始点有三种:文件首,当前位置和文 件尾。
     其表示方法如下表。
     起始点           表示符号         数字表示
     文件首         SEEK_SET          0
    当前位置      SEEK_CUR          1
    文件末尾      SEEK_END          2
   例如:
   fseek(fp,100L,0);
   其意义是把位置指针移到离文件首 100个字节处。
   还要说明的是 fseek函数一般用于二进制文件。在文本文件中由于要进行转换,故往往计算的位置会出现错误。
   常用fread 和fwrite 函数对文件进行随机读写。
*/

//例7 :使用文件随机读写方式取出程序 例6 生成的二进制文件中第 4 名学生
#include<stdio.h>
#include<stdlib.h>
struct stu
{
  char name[10];
  int  num;
  int  age;
  char addr[15];
};
void main()
{
  FILE *fp;
  char  ch;
  struct stu stu01;
  int i=0;        //i用于记录
  if((fp=fopen("c:\\stu_list","rb"))==NULL)
  {
    printf("Cannot open the file!!");
 getchar();
 exit(1);
  }
  rewind(fp);
  fseek(fp,i*sizeof(struct stu),0);
  fread(&stu01,sizeof(struct stu),1,fp);
  printf(" \n\nname  \tnumber    age     addr\n");
  printf("%s\t%5d%7d%8s\n",stu01.name,stu01.num,stu01.age,stu01.addr);
  fclose(fp);
}

 

另外:

C语言中常用的文件检测函数有以下几个
1.文件结束检测函数 feof
feof 函数的功能是判断文件是否处于文件结束位置,如文件结束,则返回值为1,否则
返回值为 0.
函数调用的一般
形式是: feof(文件指针);

2.读写文件出错检测函数 ferror
ferror 函数的功能是检查文件在用各种输入输出函数进行读写时是否出错。如 ferror
返回值为 0表示未出错,否则表示有错。
ferror 函数调用格式:
ferror(文件指针);
3.文件出错标志和文件结束标志置 0 函数 clearerr
clearerr 函数的功能是用于清除出错标志和文件结束标志,使他们为 0 值。
clearerr 函数调用格式:
clearerr(文件指针)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值