小编Dae*_*314的帖子

制作一个数组来保存C中的字符数组

我的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
Run Code Online (Sandbox Code Playgroud)

字符串数组随着时间的推移而变化,我使用字符串数组数组来基本保存arrayOfStrings的历史快照.当我需要访问数据的快照数组时,我的问题出现了.这是我必须将内容放入快照数组的代码:

arrayOfArraysOfStrings[input_index] = arrayOfStrings; // you can assume input_index is updated correctly, I've already checked that.
Run Code Online (Sandbox Code Playgroud)

这似乎是不正确的,因为当我尝试访问并打印出快照数组的内容时,它只打印出来自最新的arrayOfStrings的信息.我想要的想法是将arrayOfChars所指向的地址存储在快照数组的一个条目中,以便我以后可以访问它.

现在,访问快照数组中的条目是这样完成的:

arrayOfArraysOfChars[historicalIndex][indexOfTargetChar]
Run Code Online (Sandbox Code Playgroud)

我想回答几个问题:

  1. 我概述的方法是否适用于我正在尝试做的事情,还是我的整体逻辑存在缺陷?
  2. 我当前的代码出了什么问题,如何解决?
  3. 有没有更好的方法来做到这一点,如果是这样,数组的初始化,数组的添加和数组的读取如何工作?

--edit 4/18--部分问题在于我在arrayOfArraysOfStrings中设置指针指向arrayOfStrings指向的相同内容.这是糟糕的,因为arrayOfStrings被编辑.我需要一些方法来复制2D数组...最好是通过简单地为arrayOfStrings分配一个新的内存块来指向.

c arrays character-arrays

15
推荐指数
3
解决办法
6万
查看次数

标签 统计

arrays ×1

c ×1

character-arrays ×1