- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有没有办法用 C 语言中的另一个单词替换文件中的字符串?我意识到唯一可能的方法(也许)是使用适当的更改重写临时文件上的第一个文件。问题是,通过这样做,我被迫对同一个文件进行读取和写入(它没有那么优化)。有没有办法在不创建新文件的情况下进行字符串更改?如果是的话,我该怎么做?
最佳答案
如果将字符串 aa
替换为不同字节长度的字符串 bbb
(与 UTF-8 字符长度不同,请参阅 utf8everywhere ),则需要要有一个临时文件,所以你暂时需要两倍的磁盘空间。顺便说一句,您可能需要指定一个单词到底是什么(想想单词如何结尾或分隔;combining characters 怎么样?)。
如果原始字符串和替换字符串具有相同的字节长度(例如,aa
被 cc
替换,但不是 çà
),您可以就地进行替换。
如果文件大小很小(小于几 GB),您可以完全在堆内存中读取它(阅读 C dynamic memory allocation ,使用 malloc
和免费
),remove
原始文件,然后从内存中写入(例如使用 fwrite
或 fprintf
)新文件。
在当前的笔记本电脑或台式机上,大多数文件都足够小以适合内存(例如,因为它们小于千兆字节),但并非全部。您可以在足够大的磁盘上拥有一个 TB 的文件(前提是您的磁盘分区和文件系统允许)。
了解有关 C 的更多信息 stdio
input output functions 。无法在文件“中间”或“内部”插入或删除字节,只能在文件末尾插入或删除字节。
如果文件是文本文件(不是二进制文件),您可以逐行读取它(如果有的话使用 getline,或者仔细使用 fgets 并适当处理行溢出)并循环处理每一行。然后,您可以假设每行都适合内存(例如小于 1 GB)。
如果您需要能够处理包含单个 TB 行的巨大文件,您需要更多地考虑如何做到这一点(例如,阅读 finite state machines 和/或以 block 的形式进行处理)。
如果此类替换是您想要高效执行的常见操作,您可能会想到一些不同的(并且更“高效”)的方式将数据保留在磁盘上,也许使用索引文件 gdbm ,或数据库 sqlite .
关于c - 有没有一种不错的方法可以用 C 中的另一个单词替换文件中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48718720/
我认为,像Rails这样的框架鼓励从数据库中移出很多逻辑,甚至包括约束和外键之类的东西。更好,因为它更易于管理且易于更改。即使这样,某些操作也更容易更快,或者仅在SQL中才可能。 最近,NoSQL数据
我理解 F1-measure 是精确率和召回率的调和平均值。但是什么值定义了 F1 度量的好坏呢?我似乎找不到任何引用文献(谷歌或学术)来回答我的问题。 最佳答案 考虑sklearn.dummy.Du
我真的被 .NET 4 中引入的代码契约所吸引(尽管有 DevLabs 的帮助)。但是一张精美的打印品让我冷静了很多。这是它说的: 在线程安全方法中在锁外调用后置条件时,除了不使用它们外,目前没有解决
我有一个 GUI 应用程序,它使用 pthreads 进行一些繁重的后台处理。 虽然后台处理正在运行,但 GUI 非常没有响应,我认为这是因为后台线程正在耗尽 CPU 时间。 在 Windows 上,
我是一名优秀的程序员,十分优秀!