我在某个地方来到这里。
正在写入文件,然后完成后退(fileptr),然后写入应写入文件开头的内容。但是一开始写,不会覆盖文件的内容吗?请指教。
答案 0 :(得分:4)
是的,文件将被覆盖,但仅限于写入的长度。如果文件较长,在大多数情况下(主流系统上的普通文件),剩余的字节将保持不变。
但是,您可能实际上想知道该文件是否将截断:通常(相同情况) 否 。从技术上讲,截断是实现定义的用于文本文件,而 没有 用于二进制文件。
如果一个现代系统甚至具有文本与二进制的区别,当然Unix,Linux和BSD系统没有,我会感到惊讶,我怀疑实现 - 为某些现已退役的化石投入了定义的黄鼠狼词。如果是这样,那么在所有重要情况下,剩余的字节将保持不变,文件不会被截断。
现在,文件API用于许多没有实现文件抽象完整列表的东西:想想UDP套接字,终端,磁带驱动器,非存储硬件的随机控制器等等。这是不明智的,至少可以说,甚至使用缓冲的I / O包来编写这样的通道,但也许它们是规范中存在差距的原因。