【问题标题】:"Variable" Variablenames in CC中的“变量”变量名
【发布时间】:2011-07-22 18:20:36
【问题描述】:

我认为我正在寻找的东西在 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;

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

【问题讨论】:

  • 我担心这在 C 中是不可能的。你从哪里得到输入数据?
  • 你在这里问了两个问题。第一个,在正文中;使用某种地图。对于第二个;使用@ammoQ 的答案。

标签: c variables dynamic names


【解决方案1】:

首先让它成为一个数组!如果您必须将它们作为数组访问,那么拥有 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];

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 好的,我确实将这个输入数据创建为 C 源文件,因为我还没有找到解决我的具体问题的另一种方法(无论如何,在这个具体问题中,它实际上是一种非常好的阅读方式数据)。关键是,如果我能够动态处理名称,我就不需要重写数据创建函数的大部分;)无论如何,感谢所有
    【解决方案3】:

    老实说,我不能 100% 确定你想做什么......

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

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

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

    听起来对吗?

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

    【讨论】:

    • 我不确定我是否理解您在数组查找中使用atoi 的原因。您没有将任何字符串转换为整数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    • 1970-01-01
    相关资源
    最近更新 更多