Вот ответ на вопрос, который я думаю вы задаете:
/**
* Allocate the struct.
*/
struct thread_data *td = malloc(sizeof *td);
/**
* Compute the number of elements in td->incall (assuming you don't
* want to just hardcode 10 in the following loop)
*/
size_t elements = sizeof td->incall / sizeof td->incall[0];
/**
* Allocate each member of the incall array
*/
for (i = 0; i < elements; i++)
{
td->incall[i] = malloc(HOWEVER_BIG_THIS_NEEDS_TO_BE);
}
Теперь вы можете назначать строки для td->incall
следующим образом:
strcpy(td->incall[0], "First string");
strcpy(td->incall[1], "Second string");
В идеале вы хотите проверить результат каждого malloc
, чтобы убедиться, что он был успешным, прежде чем переходить к следующему.