C语言在MS-DOS中的数据库?

3
要求: 我有一个CSV文件,最多包含2000个记录或更少。 每条记录表示一行。 每行包括设备ID、消费者姓名和地址以及设备制造商。 每当服务名单中的任何一个消费者得到服务时,我都需要更新服务的时间戳。
这些要求需要在ANSI C语言下实现,用于MS-DOS,开发IDE为Borland C 3.1。
更新:
1.我不能更改平台或IDE,因为这些要求是添加到具有Borland c 3.1 IDE依赖关系的现有代码中的。
2.我不允许使用任何商业产品。
3.两三个搜索键。
4.我的终端设备的CPU规格为:
处理器:Intel 80C386 EX
操作系统:/BIOS MS-DOS 6.22 / SANDS BIOS
内存:3.5 MB SRAM(最高可达16.5 MB)

1
只是澄清一下 - 您需要将现有的 csv 文件(逗号分隔变量)转换为数据库,并使用 Borland 特定地创建一个 C 应用程序。这些规格中是否有任何灵活性?例如,您是否可以接受当前编译器(即符合至少 C99、C11)? - ryyker
1
如果你在20年前问这个问题,那么会有很多答案。当时有Btrieve、Paradox、dBase、FoxBase等等。现在你可能还能找到其中的一款软件,但我怀疑你是否能够获得新的许可证或支持。 - Gabe
你需要多少个不同的搜索键? - steveha
此外:这是一个学校项目,你需要实现这个数据库,还是你正在开发一个运行在字面意义上的8086处理器上的应用程序? - user149341
你的需求描述不够清晰。如果只是需要更新CSV文件中的特定字段,那么使用简单的扫描和替换算法要比使用数据库更为合适。如果确实需要使用数据库功能,你需要更好地描述你的应用程序需求。 - Hot Licks
显示剩余3条评论
2个回答

1
你不需要数据库库来处理四个字段的2000条记录。即使在具有640K内存的8088 PC上,这些数据也可以通过C程序在内存中处理。就此而言,应该可以轻松将这些数据加载到任何像Qedit这样的良好DOS文本编辑器中。
只需为记录分配一些结构体。这些记录的2000个指针数组可以被排序以创建排序索引,可以进行二分查找。您可以使用多个这样的数组在不同字段上创建排序索引。
或者实现一些简单的哈希。
但是即使是线性搜索少于2000条记录也可能没问题。
你知道吗,一些8位微型计算机上的BASIC解释器使用链接列表线性搜索程序代码行来实现GOTO?向前的GOTO(到大于当前行号的行)将从当前行开始扫描;向后的goto将从程序的开头开始搜索。然而,数千行的程序运行得很好。
选择“大”或“巨大”内存模型;数据不会全部适合64 kB段中。

1

快速搜索似乎表明SQLite可以作为MS-DOS上的库使用。查看此链接


那将是一个32位版本,需要386或更好的处理器。OP指定了对8086的要求。 - Gabe
你说得对,他确实这么说过。我以为他只是指x86处理器,但在这种情况下这可能是一个无效的假设。 - Holly
1
一个聪明的人可能可以将SQLite的有限功能版本移植到8086上。但对于所描述的简单问题而言,这样做会带来更多麻烦,不值得。 - Hot Licks
聪明的人会编写一个只使用 C 库的 ANSI C 程序,并且完成它。对于少于 2000 条记录,你不需要任何 SQ-工具。 - Kaz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接