C语言文件:文件位置标记及其定位

1.为什么需要顺序读写?

顺序读写按数据在文件中的物理位置次序进行读写,容易操作,但是效率不高。以对任何位置上的数据进行访问,显然这种方法比顺序访问效率高得多

2. 文件位置标记

为了对读写进行控制,系统为每个文件设置了一个文件读写位置标记(简称文件位置标记或文件标记),用来指示“接下来要读写的下一个字符的位置”。
一般情况下,在对字符文件进行顺序读写时,文件位置标记指向文件开头,这时如果对文件进行读/写的操作,就读/写完第1个字符后,文件位置标记顺序向后移一个位置,在下一次执行读/写操作时,就将位置标记指向的第2个字符进行读出或写入。依此类推,直到遇文件尾,,此时文件位置标记在最后一个数据之后。
在这里插入图片描述
对流式文件既可以进行顺序读写,也可以进行 随机读写。关键在于控制文件的位置标记。 如果文件位置标记是按字节位置顺序移动的,就是顺序读写。如果能将文件位置标记按需要移动到任意位置,就可以实现随机读写。 所谓随机读写,是指读写完上一个字符(字节)后,并不一定要读写其后续的字符(字节),而可以读写文件中任意位置上所需要的字符(字节)。即对文件读写数据的顺序和数据在文件中的物理顺序一般是不一致的。可以在任何位置写入数据,在任何位置读取数据。

3. 文件位置标记的定位

(1).使文件位置标记指向文件开头rewind

rewind(文件指针);

rewind(fp);

rewind函数的作用是使文件位置标记重新返回文件的开头,此函数没有返回值

(2).改变文件位置标记fseek
  • 0代表“文件开始位置”,1为“当前位置”,2为“文件末尾位置”
  • “位移量”:指以“起始点”为基点,向前移动的字节数(长整型)

fseek(文件类型指针, 位移量, 起始点);

fseek (fp,50L,0);		//L代表长整型,将文件位置标记向前移到离文件开头50个字节处
fseek (fp,100L,1); 		//将文件位置标记向前移到离当前位置100个字节处
fseek (fp,-10L,2);		//将文件位置标记从文件末尾处向后退10个字节
(3). 测定文件位置标记的当前位置ftell
  • ftell函数的作用是得到流式文件中文件位置标记的当前位置,用相对于文件开头的位移量来表示。
  • 调用函数时出错(如不存在fp指向的文件),ftell函数返回值为-1L。
t=ftell(fp);			 //变量存放文件当前位置
if(t==-1L) printf(″error\n″); 	//如果调用函数时出错,输出″error″

有疑问欢迎在评论区留言,有时间将为您做出回复

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值