2015-02-12 2 views
0

Мне нужно помочь malloc space для строкового массива, а затем вернуть это значение в качестве указателя.Mallocing Space для String Array в C

Как мне это сделать? Мой код:

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 
+0

Посмотрите на это [учебник для таНос] (http://www.tutorialspoint.com/c_standard_library/c_function_malloc.htm). – adamdc78

ответ

3

Во-первых, выделить память для 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;