我有一个二维字符数组,例如char aList[numStrings][maxLength]
。理想情况下,在程序执行期间,我希望能够修改 aList 的内容,即添加、修改或删除条目。由于 aList 可能会发生更改,因此我不想在每次更改后都必须重新编译我的程序来修改 aList。所以我想在程序结束时将 aList 写入文本文件,然后在下一个程序运行开始时将其读回到 aList 中。
但是,我不知道在程序开始时 numStrings 的值是什么。 (我没有使用 C99,所以我不能使用 VLA,并从外部文件中获取先前字符串的计数。)当然,我可以将 numStrings 设置为人为的高值,但这很糟糕!
有没有办法在不知道 numStrings 值的情况下填充 aList?我认为不存在(我已经查看了相关问题),但是还有其他方法可以实现我所需要的吗?
如果您确实希望能够从网格中间删除项目(您的问题对此不清楚),那么您将需要某种多重链接结构。这些通常用于实现稀疏数组,因此您可能可以找到一个预制的。
我正在谈论这样的事情:
+---+
| A |
+-|\+
| \
| \
| \
| \
| +----+----+----+
| | C0 | C1 | C2 | ...
| +--|-+----+--|-+
| | |
| | |
+-V--+ +--V-+ | +----+
| R0 |->|a0,0|-------+>|a0,3|--> ...
+----+ +--|-+ +--V-+----+
| R1 |-----+----->|a1,2|--> ...
+----+ | +--|-+
... V |
... V
...
其中 A 是对象的根节点,C 是列指针数组,R 是行指针数组,每个单元格都指向其行和列上的下一个邻居。所有未明确表示的单元格均假定具有某个默认值(通常为 NULL 或 0)。
这是一个简单的想法,但实现相当挑剔,很容易搞砸,所以如果可以的话,请使用经过调试的库。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)