Мне нужно объявление структуры, которое содержит одну строку, которую я могу затем создать массив (так что в основном массив указателей на строки). Я знаю, как создать массив структур, каждый из которых содержит строку:C reallocing typedef?
typedef char line_t[MAX_INPUT + 1];
typedef struct {
line_t text;
} lines;
lines *arrayoflines;
arrayoflines = (char *)calloc(MAX_INPUT + 1, sizeof(char));
Здесь нет проблем. Однако, что, если количество символов в строке, которая должна быть сохранена, проходит границы MAX_INPUT
? Я чувствую, что мне нужно будет realloc char line_t[MAX_INPUT + 1]
, и это то, что я абсолютно не знаю, как это сделать.
Редактировать: Похоже, некоторые думали, что количество строк в массиве строк было проблемой. Я имел в виду перераспределение длины строки, которая может быть сохранена в каждом элементе в массиве строк.
почему не только предотвратить ввод от превышения MAX_INPUT – Les
@Les вопрос о назначении университета - я не знаю размер самого вход. Это может быть что угодно. Мой лектор - суровый человек. – Laefica
все еще, вы будете знать размер вашего ввода, когда ваша программа его прочитает. как и для вашего первоначального выделения, обычно это будет ... arrayoflines = calloc (1, sizeof (lines)); – Les