gpt4 book ai didi

c - 在输出文件中的两点之间移动

转载 作者:太空宇宙 更新时间:2023-11-04 00:17:37 25 4
gpt4 key购买 nike

我正在编写一个生成大型输出文件的 C 程序。为了提高可读性,我想在文件的某些点收集某些类型的输出,而不是将其随机分散。

考虑这样一个文件:

log
log
(a)

output
output
output(b)

假设程序当前正在写入 (b) 处的行。 C中有没有一种特别优雅的方式可以达到移动到(a)点,添加line out输出,然后在(b)点恢复正常输出的效果?

我知道我可以使用标准 shell 工具(例如 csplit)在指定点拆分文件,将输出附加到前半部分,然后将其拼接在一起,从而实现这种效果。但是,此应用程序必须是跨平台的,因此我不能指望有可用的 shell。

任何建议都会很有帮助!

最佳答案

在单个文件中执行您所描述的操作的唯一方法是为前面的“日志”条目保留您需要的所有空间,我猜您不能这样做,因为您不知道它们会有多大。

您不能直接插入到文件中,将内容上移到插入点上方以腾出空间。这不是普通文件系统支持的概念。您需要物理读取和重写所有“输出”部分才能插入“日志”部分,随着文件的增长,这将需要越来越多的工作。

最好的办法是编写两个单独的文件,然后在最后将它们连接在一起。

编辑 根据 Sharpie 的评论:由于输出是程序的一组命令,这是否意味着您可以安全地假设它不会超过几 MB,并且只需在内存中构建它,然后再一次将其全部写出?

关于c - 在输出文件中的两点之间移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1144462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com