“变量” Variablenames用C

问题描述:

我认为我找的其实是不可能在C,但也许有一些想法如何解决它:“变量” Variablenames用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; 

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

+0

我很担心这是不可能的,你从哪里得到输入数据? – 2011-03-25 08:58:19

+0

你在这里问两个问题。第一个,在文本中;使用某种地图。对于第二个;使用@ ammoQ的答案。 – stefan 2011-03-25 08:59:16

让它成为一个数组!如果您必须以数组的形式访问它们,那么有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]; 

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

我觉得很奇怪,你会得到输入到你的程序作为一个C源文件,每行一个变量就像这样。如果你正在生成这个C文件,那么你应该生成它来使用数组,而不需要你要求的纠正代码。如果有人给你这样的C代码,那么请他们改变它以使用数组;没有理由让你自己这样不便,而且这种改变应该是非常简单的。

+0

好吧,我确实创建了这个输入数据作为C源文件BC我还没有找到另一种方式来解决我的具体问题(无论如何,在这个特定的问题,它实际上是一个非常好的阅读数据的方式)。关键是,如果我能够动态处理名称,我不需要重写数据创建功能的一大部分;)无论如何,感谢所有 – Chris 2011-03-25 09:05:13

我不是100%肯定你正在试图做的是诚实的...

从我可以看到你想要最终把所有这些元素到一个数组。

那么,为什么不简单地使用一个由42个元素组成的数组,并根据你可以从关键字中解析出来的数据来分配它。

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

这听起来没错吗?你也可以创建对象(C中的结构体)并动态地将它们放入另一个更加动态的数据结构中。

+0

我不确定我遵循为什么你使用'atoi'数组查找。你并没有将任何字符串转换为整数。 – templatetypedef 2011-03-25 09:05:28

+0

我以为他从文件中读取data_1的字符串。也许我误解了它... – tamarintech 2011-03-25 09:08:01