c - C中字符串数组的分配空间

标签 c arrays pointers return-type c-strings

我需要帮助为字符串数组分配空间,然后将此值作为指针返回。

我该怎么做呢?我的代码是:

char * strArray[*arrLen] = malloc(srcStrLen - numOfDelimsInStr + (numOfDelimsInStr + 1));

我用 memcpy 和手动 '\0' 添加填充字符串数组。然后我通过以下方式返回值:

return (char **) strArray;

我在编译时得到的错误和警告是:

answer03.c:48:3: error: variable-sized object may not be initialized
   char * strArray[*arrLen] = malloc(srcStrLen - numOfDelimsInStr + (numOfDelimsInStr + 1));
   ^
answer03.c:68:3: warning: function returns address of local variable [-Wreturn-local-addr]
   return (char **) strArray;
   ^
make: *** [all] Error 1

最佳答案

首先,为strArray分配内存。

假设,arrLen是一个整型变量,而不是指针,

char** strArray = malloc(arrLen*sizeof(*strArray));
if ( strArray == NULL )
{
   // Deal with error condition
}

然后,为数组的每个元素分配内存。

for ( i = 0; i < arrLen; ++i )
{
   strArray[i] = malloc(srcStrLen - numOfDelimsInStr + (numOfDelimsInStr + 1));
   if ( strArray[i] == NULL )
   {
      // Deal with error condition
   }
}

然后,返回数组。

return strArray;

关于c - C中字符串数组的分配空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28486762/

相关文章:

c - 如何在 C 中完成使用指针运算而不是数组下标的功能?

c - 意外输出运行信号量

python - Ctypes 返回数组

c++ - 使用 char* 存储整数

vsnprintf 能否返回大于 1 的负值?

执行后关闭(管道[1])

javascript - 要数组的对象数组

java - 在特定位置/位置打印数组 java netbeans

c++ - C++-候选函数不可行: no known conversion from 'struct ' to 'struct (&)'

c - 从 C 中的结构开始