最近用c编一个小程序,用到fputc向文件内写入字符,希望保持原有文件内容而能覆盖特定位置的字符。使用fputc以rt+方式打开文件可以实现这个。可是问题来了,硬盘在读写的时候将同时读写一整个扇区,那么fputc实现覆盖文件某个位置的字符是怎样实现的呢?是将一整个扇区读入后修改对应字符再写入?那么这样的话势必需要一个缓冲区,如果真是这样,这个缓冲区会维持到什么时候呢?比如我连续调用两次fputc,写入的数据在都同一扇区内,需要读取几次文件?
2条回答 默认 最新
- threenewbee 2015-08-30 18:28关注
这个根本不劳你操心,这些是操作系统底层甚至硬件的事情。硬盘自身、操作系统都有缓存。
通常一个机械硬盘自身带有8~64MB的缓存,并且它会自动优化读写顺序,避免来回寻址。操作系统的IO缓存就更大了。这个没法估计。
而且,事实上,现代的硬盘,因为容量非常非常大,速度非常非常快,每次读写其实都不是1个扇区,可能是8个扇区或更多——即便你只修改一个字节。
不过不管怎么说,从你编程的角度看,你不用关心底层这些实现,操作系统和硬盘本身无论怎么设计,都保证了你的数据读写是没有问题的。
解决 无用评论 打赏 举报
悬赏问题
- ¥15 运筹学中在线排序的时间在线排序的在线LPT算法
- ¥30 求一段fortran代码用IVF编译运行的结果
- ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
- ¥15 lammps拉伸应力应变曲线分析
- ¥15 C++ 头文件/宏冲突问题解决
- ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
- ¥50 安卓adb backup备份子用户应用数据失败
- ¥20 有人能用聚类分析帮我分析一下文本内容嘛
- ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
- ¥30 python代码,帮调试,帮帮忙吧