我的 C 目前有点生锈,所以我没能创造出我认为应该很基本的东西。
请允许我在这篇文章中将字符数组称为字符串。它会让我和你都更清楚。
我所拥有的是一个可以容纳 1 个或多个字符串的数组。例如 {"ab", "cd", "ef"}。我想制作另一个数组来存储字符串数组的多个版本。所以像 {{"ab", "cd", "ef"}, {"gh", "ij"}, {"kl"}}。
我现在拥有的是:
char *arrayOfStrings[50]; // a single array to hold multiple strings
char **arrayOfArraysOfStrings[10]; // array to hold multiple snapshots of arrayOfStrings
字符串数组随时间变化,我使用字符串数组基本上保存arrayOfStrings 的历史快照。当我需要访问快照数组以获取数据时,我的问题就出现了。这是我必须将东西放入快照数组的代码:
arrayOfArraysOfStrings[input_index] = arrayOfStrings; // you can assume input_index is updated correctly, I've already checked that.
这似乎是不正确的,因为当我尝试访问并打印出快照数组的内容时,它只打印出最新 arrayOfStrings 中的信息。我的想法是将 arrayOfChars 指向的地址存储在快照数组的条目中,以便以后可以访问它。
现在,对快照数组中的条目的访问是这样完成的:
arrayOfArraysOfChars[historicalIndex][indexOfTargetChar]
我想回答几个问题:
- 我概述的方法是否适合我正在尝试做的事情,或者我的整体逻辑是否存在缺陷?
- 我当前的代码做错了什么,我该如何解决?
- 有没有更好的方法来做到这一点,如果是这样,数组的初始化、添加到数组以及从数组中读取是如何工作的?
--edit 4/18-- 部分问题是我在 arrayOfArraysOfStrings 中设置指针以指向与 arrayOfStrings 指向的相同的东西。这很糟糕,因为 arrayOfStrings 被编辑了。我需要一些方法来复制一个二维数组......最好是简单地为 arrayOfStrings 分配一个新的内存块来指向。