gpt4 book ai didi

c - 如何在文件C中搜索并替换字符串

转载 作者:行者123 更新时间:2023-11-30 18:39:42 25 4
gpt4 key购买 nike

我必须修改文件中的字符串,其结构如下:

Name: Name1
Surname: Surname1
ID: 00000000
Age: 30


Name: Name2
Surname: Surname2
ID: 00000001
Age: 32

...

我想这样做:我要求输入ID,我问他想更改什么(如果是姓名,ID或年龄),然后我问他想更改什么。然后我在文件中搜索 ID,如果他想更改姓氏,我将 FSEEK 移至 -1;对于姓名,我将 FSEEK 移至 -2;如果他想更改年龄,我将 FSEEK 移至 +1。

那么,有没有更简单或更快速的方法来做到这一点?

谢谢:)

最佳答案

您无法在文件内插入或删除某些字节序列。您只能覆盖现有字节,或在文件末尾附加新字节(这就是 <stdio.h> 文件的标准化方式,POSIX 或 Windows 文件的行为方式,以及几乎每个 file system -我不知道今天有什么异常(exception) - 有效)

因此,您可以从旧文件生成一个新文件(然后可能 rename 新文件与旧文件一样)。

您还可以读取内存中的所有文件并从内存中输出整个新内容。

您可能应该考虑更高级别的抽象:索引文件 GDBM或简单的数据库 Sqlite (或真实的数据库,如 PostgreSQLMongoDb 等...)

请注意,当前的处理器比磁盘快得多(hard spinning disks 的速度接近一百万倍 - 访问时间在几十毫秒内 - ,而 SSD 的速度可能是千倍 - 访问时间约为一百微秒)。因此,花费一些 CPU 时间来“组织”写入"file"或“网络”的数据是很有意义的(而且比上个世纪更有意义)。

如果使用笔记本电脑或台式机,它现在有大量 RAM(几 GB),因此很可能您的所有数据都适合内存。此外,RAM 带宽比磁盘、SSD 或网络带宽高得多(而且 RAM 延迟也低得多)。如果您管理大量数据(超过一千兆字节),那么使用数据库系统是明智的(特别是,因为您可能不会一次写入所有数据)。

您可能对 serialization 感兴趣, application checkpointing , JSON ....

关于c - 如何在文件C中搜索并替换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28897504/

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