【问题标题】:How to put variables in const char *array and make size a variable如何将变量放入 const char *array 并使 size 成为变量
【发布时间】:2015-10-05 03:34:54
【问题描述】:

我有这个正确的数组,但我需要值和大小是可变的。这可能吗?如果有,怎么做?

const char *labels[] = { "Group A", "Group B", "Group C", "Group D", "Group E", "Group F", "Group G", "Group H" };

它必须是一个const char * 数组,因为它被用作 stringArray 参数,不会变得更复杂。

任何帮助将不胜感激。请记住,我是一名学生开发人员。

【问题讨论】:

    标签: c arrays char constants


    【解决方案1】:

    它必须是一个 const char *array 因为它被用作 stringArray 参数,不会太复杂。

    您可以将char* 传递给期待const char* 的函数。

    鉴于此,也许您可​​以尝试这样的事情:

    char**arr = malloc(ARRAY_LEN * sizeof(char*));
    for (i=0; i<ARRAY_LEN; i++)
    {
         arr[i] = malloc(EACH_STRING_LEN);
         if(arr[i]==NULL) 
            handleError();
         strcpy(arr[i],"test"); // put some string in i-th array
    }
    

    和释放部分:

    for (i = 0; i < ARRAY_LEN; i++) {
      free(arr[i]);
    }
    free(arr);
    

    【讨论】:

    • Op 说它必须是 const char *
    • @Julien-L:看我的评论
    • 你说得对,我想到了char* const*,然后在字符串中放入一些东西会导致问题。我 +1 你。
    • 这行得通,@Giorgi。谢谢!我不得不推迟这部分的工作,很抱歉回复缓慢。
    • @NerdMom:很高兴能帮上忙。
    【解决方案2】:

    c 数组没有可变大小。如果你需要这个功能,你必须使用不同的数据结构

    “它被用作 stringArray 参数,它不会采取任何更复杂的方法”是什么意思?

    【讨论】:

    • 这里是使用它的函数: TextBox *setLabels(StringArray labels) { TextBox *ret = new TextBox(CAxis_setLabels(ptr, labels.data, labels.len));后悔);返回 ret; }
    猜你喜欢
    • 2013-01-07
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    相关资源
    最近更新 更多