2

我认为我正在寻找的东西在 C 中实际上是不可能的,但也许有些人知道如何解决它:

我需要处理一些输入数据。该数据以 int 形式给出,其中给出了数据的数量和保存实际数据的字符串(即 char *)的数量。这些字符串被命名为 data_0 ... data_n:

 int n = 42; // the number of strings
 char *data_0 = "some input1";
 char *data_1 = "some input2";
 ....
 char *data_41 = "the last input data";

所以这就是我获取数据的方式。现在的问题是:我该如何处理它?我的目标是将它们存储在一个大数组中。初始化这个数组当然很简单,我只需要一个由 malloc 获得的 n char-Pointer 数组。但后来我想将这些字符串分配到数组中。这就是我卡住的地方。我需要动态分配它们,因为我以前不知道大小。就像是:

 for(i = 0; i < n; i++)
      datastorage[i] = data_i;

所以我的意思是动态访问变量名。我希望你明白我的意思:) 谢谢。

4

3 回答 3

4

首先让它成为一个数组!如果您必须将它们作为数组访问,那么拥有 42 个单独的变量绝对没有意义!顺便说一句,在 C 语言中,变量名在运行时不可用,它们在编译后就丢失了,所以忘记按名称动态访问变量。

int n = 42; // the number of strings
char *data[42];
      data[0] = "some input1";
      data[1] = "some input2";
....
      data[41] = "the last input data";

for(i = 0; i < n; i++)
    datastorage[i] = data[i];
于 2011-03-25T08:56:17.943 回答
1

在 C 中没有直接的方法可以做到这一点,因为数组的全部目的正是为了摆脱做这样的事情的需要。传统上,人们使用数组,这样您就可以通过索引引用多个不同的变量,而无需为每个变量指定一个唯一的名称。

我觉得奇怪的是,您会以 C 源文件的形式输入程序,每行一个变量,就像这样。如果您正在生成此 C 文件,那么您应该生成它以使用数组,从而避免需要您要求的更正代码。如果其他人给你这样的 C 代码,那么请他们将其更改为使用数组;您没有理由不得不像这样给自己带来不便,并且您自己进行更改应该非常简单。

于 2011-03-25T08:57:04.530 回答
1

老实说,我不是 100% 确定您要做什么...

从我所见,您最终希望将所有这些元素放入一个数组中。

那么为什么不简单地使用一个包含 42 个元素的数组并根据您可以从键中解析的内容来分配它。

即:data_1,替换data_,留下1,dataarray [atoi(1)] =你的char指针。

听起来对吗?

您还可以创建对象(C 中的结构......)并将它们动态地放入另一个更动态的数据结构中。

于 2011-03-25T08:58:24.227 回答