【续】linux C语言 文件描述符 读写地址分析

记录日期:2014-10-23 20:08


日子背景:前些天在整理“智能相机人数统计”数据的存储问题,由于对fopen打开方式的形式不是很了解,导致读写文件时一直异常,浪费了很多宝贵的时间,为了避免相同的朋友走同样的弯路,同时也警示自己不要犯同样的错误,特此记录,望对有需求的您有所帮助。


我在操作文件时,就是理解错了a/a+的打开文件的原理。导致原本想保存一个指定最大值的文件大小的文件时,出现了,数据写正确,但是读出来的数据错误,文件也一直在增大。后来使用a + r+的方式综合打开文件的:先用a的方式打开,然后立即关闭文件,保证了文件不存在时,会自动建立;然后马上用r+的方式再此打开,保证了数据可以同时被读 和 写,且不要的数据可以结合fseek来覆盖,即达到了,数据文件不会超过指定大小。


具体见下面对Linux手册的对fopen的进一步详解。


fopen():

       r :以只读方式打开文件文件,前提是 该文件必须存在------>程序中只可对获取到的文件描述符进行读操作;


      r+:以可读可写的文件,前提是 该文件必须实现存在--------->程序中可对获取到的文件描述符进行读 或 写 操作;


     w:以只写方式打开文件,如文件已经存在,则会将源文件内容清空,若不存在,则会新建文件------------->在每次打开文件时,文件原来的内容会被删除,程序只可对获取到的文件描述符进行写操作;


     w+:以可读可写方式打开文件,如果文件已经存在,则会将源文件内容清空,若不存在,则会新建文件------>在每次打开文件时,文件原来的内容会被删除,程序可对获取到 的文件描述符进行读 和 写操作;


    a:以附加方式打开只写文件,如文件存在,则写入的数据会被追加到文件尾,即源文件会被保存下来,若文件不存在,则会新建文件-------->附加的方式:是指不管如何对其文件如何操作,源文件的内容都会被保存下来,即使使用fseek移动写入指针,原数据依然不会被覆盖,新写入的数据会被插入到原始数据之间,即数据会随着写入越来越大。

 

     a+:以附加方式打开可读可写文件,如文件存在,则写入的数据会被追加到文件尾,即源文件被保存下来,若文件不存在,则会新建文件-------->附加的方式:是指不管如何对其 文件如何操作,源文件的内容都会被保存下来,即使使用fseek移动写入指针,原数据依然不会被覆盖,新写入的数据会被插入到原始数据之间,即数据会随着写入越来大。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值