gpt4 book ai didi

C:替换文件中的字符串而不使用临时文件或加载到内存中

转载 作者:行者123 更新时间:2023-11-30 19:15:45 25 4
gpt4 key购买 nike

我正在准备考试,很可能会遇到这样的问题:

编写一个 C 程序,处理用字符串 B 替换字符串 A 的文件,而不使用临时文件或将文件加载到内存中。

实际上并不总是这样,但有点像。字符串 A 和 B 可以是任意长度(A < B、A > B 或 B 可能取决于其他长度)。

尝试这样做我会发疯的!我不是要求代码,而是要求有关使用 fseek、fgetc、fputc 等的组合或其他内容的一些指导。这个问题很奇怪,最常见的就是要么将整个文件加载到内存中,要么使用临时文件,我在其他地方没有找到类似的东西

编辑:我可以使用 posix 的 ftruncate

最佳答案

算法:

  1. 去逐个字符地阅读。直到找到[0]保存此地址。
  2. 现在逐个字符读取 (fgetc) 并检查每个 i 是否为 fileChar=a[i]。
  3. 如果没有寻求地址+1并转到1。
  4. 如果是,您将寻求解决并写信。

如果 B>A,您可以查找文件末尾 end 将每个字符写入下一个位置,直到有足够的空间放置 B。类似的解决方案是如果 A>B。但相反。

他们是找到 A 位置的更好解决方案。您可以为此使用滚动哈希。 https://en.wikipedia.org/wiki/Rolling_hash

关于C:替换文件中的字符串而不使用临时文件或加载到内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31929384/

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