моя проблема сегодня в том, что мне нужно выделить динамический массив структур. Я закодировал всю свою программу, но я получаю seg-ошибки, и я считаю, что это потому, что я не правильно распределял вещи. В целом мне хотелось бы получить дополнительную информацию о том, как это сделать, и где я ошибся. Благодаря!Выделение динамического массива структур в C
Вот моя структура:
struct names {
char *Name1;
char *Name2;
};
struct names **namePointer = NULL;
Вот где я хочу выделить для ряда структур в массиве, где numOfElems
является переменной, которая будет подсчитывать, сколько итераций мне нужно. В настоящее время он установлен в 1, и будет расти один каждый раз, когда мне нужно больше места:
numOfElems = 1;
*namePointer = realloc(*namePointer, sizeof(struct names) * numOfElems);
Вот как я хочу, чтобы получить ввод, а затем сохранить значения для структур в массиве. Строка была выделена ранее, а затем перераспределяется на количество символов, как это было спецификация:
printf("Enter Name1: ");
fgets(namePointer[i]->Name1, 50, stdin);
stringLen = strlen(namePointer[i]->Name1) + 1;
namePointer[i]->Name1 = realloc(namePointer[i]->Name1, sizeof(char) * stringLen);
В конце цикла есть «я ++», а затем он снова проходит через весь процесс, чтобы надеюсь, отправьте следующие значения в следующее пятно в массиве struct. Я получаю ошибку seg и не знаю, почему. Если есть более простой способ динамического выделения массива структур, пожалуйста, поделитесь!
Еще раз спасибо.
Не говорите нам, что вы думаете о коде, покажите его нам. Нам нужно увидеть ваше выделение строк и вашего цикла. Кроме того, где происходит сегрегация? Запуск этого только один раз в отладчике должен указывать на правонарушение строки кода. –
Почему вам нужен тип 'struct names **'? – yano
Ваша переменная 'namePointer' должна быть типа' struct names * namePointer; 'с одной звездой, а не с двумя. Если у вас есть массив 'int', вы используете' int * ptrIntArray; '- аналогично массиву' struct names'. Как написано, вы выделили больше памяти, чем необходимо в массиве указателей на структуры, но вы не выделили ничего для указателей. –