Да, вы можете использовать tempStruct во время ввода, который вы позже добавите в массив.
Если размер массива неизвестен, значит, у вас проблемы.Вы должны где-то отслеживать размер массива.Просто имейте целочисленную переменную, которую вы изменяете каждый раз, когда изменяете свой массив, чтобы отслеживать размер вашего массива.
Если размер структуры неизвестен во время компиляции, это еще сложнее.Вы либо просто сохраняете указатели в массиве, которые указывают на ваши фактические элементы структуры в памяти, либо вы должны отслеживать размеры каждой структуры в массиве.В последнем случае вам придется выполнять адресацию в массиве полностью вручную, рассчитывая много.Хотя это очень эффективно использует память, оно также подвержено ошибкам и чрезвычайно сложно для отладки.
ОК.Пример создания массива, в котором хранится ваша структура с использованием указателей:
struct MyStruct
{
/* code */
}
main()
{
counter = 0;
struct MyStruct** array = malloc(counter);
// Create new Element
struct MyStruct myElement;
myElement.someData = someValue;
// Add element to array:
array = realloc(array, sizeof(struct MyStruct*) * (counter + 1);
array[counter] = &myElement;
counter++;
// Create yet another new Element
struct MyStruct myElement;
myElement.someData = someOtherValue;
array = realloc(array, sizeof(struct MyStruct*) * (counter + 1);
array[counter] = &myElement;
counter++;
// Now remove the last element
free(array[counter -1]); // may have something more complicated than that, depending on your struct
array = realloc(array, sizeof(struct MyStruct*) * (counter - 1);
counter--;
}
этот код не тестировался!