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