есть два вопроса, в представлении табличных данных:.
1. Представляющего ряд
2. Представление много строк.
В вашем примере, строка может быть представлена:
struct Table_Record
{
unsigned char ip_address[4];
char domain_name[MAX_DOMAIN_LENGTH];
};
Я решил использовать длину фиксированного поля для имени домена. Это упростит обработку.
Следующий вопрос - как структурировать строки. Это решение, которое вам нужно будет сделать. Самое простое предложение - использовать массив. Тем не менее, массив имеет фиксированный размер и должен быть перераспределены, если есть больше записей, чем размер массива:
struct Table_Record table[MAX_ROWS];
Другая структура данных для таблицы является список (одинарной или двойной, ваш выбор). К сожалению, язык C не предоставляет структуру данных списка, поэтому вы будете либо писать свой собственный, либо получать библиотеку.
Альтернативные полезные структуры данных - это карты (ассоциативные массивы) и деревья (хотя многие карты реализованы с использованием деревьев). Карта позволит вам получить значение для заданного ключа. Если ключ является IP-адресом, карта вернет доменное имя.
Если вы собираетесь читать и записывать эти данные с использованием файлов, я предлагаю использовать базу данных, а не писать свои собственные. Многие рекомендуют SQLite.
Почему вы думаете, что использование указателей - хорошая идея? – 2010-05-04 09:43:46
@Neil Длина доменных имен не всегда будет в пределах 20 - они варьируются от 'bit.ly' до очень длинных, и я предполагаю, что выделение памяти в кучу по мере необходимости будет лучше, чем массив [MAX_LENGTH], который будет есть (похоже, что у него много предметов - из-за того, что он считал его «таблицей») – Amarghosh
@Neil Можете ли вы сказать мне, почему это не очень хорошая идея? – Amarghosh