ConsoleInfo *CI_new(const char *name, const char *ip, ConsoleInfo *prev, ConsoleInfo *next)
{
ConsoleInfo *list;
if ((list = malloc(sizeof(ConsoleInfo))))
{
list->name = strdup(name);
list->ip = strdup(ip);
list->prev = !prev ? NULL : prev;
list->next = !next ? NULL : next;
}
return (list);
}
bool CIL_is_empty(ConsoleInfoList *list)
{
return (list->count == 0);
}
ConsoleInfoList *CIL_append(ConsoleInfoList *list, const char *name, const char *ip)
{
if (CIL_is_empty(list))
{
list->head = list->tail = CI_new(name, ip, NULL, NULL);
}
else
{
ConsoleInfo *new = CI_new(name, ip, list->tail, list->head);
list->tail = new;
list->head = new->next;
}
list->count++;
return (list);
}
ЬурейеЕ и Ко ..C - Вдвойне связанный список
typedef struct ConsoleInfo ConsoleInfo;
typedef struct ConsoleInfoList ConsoleInfoList;
struct ConsoleInfoList {
size_t count;
ConsoleInfo *head;
ConsoleInfo *tail;
};
struct ConsoleInfo {
char *name;
char *ip;
ConsoleInfo *next;
ConsoleInfo *prev;
};
typedef struct ConsoleName
{
char value[256];
} ConsoleName;
typedef struct ConsoleIp
{
char value[256];
} ConsoleIp;
Теперь, почему, когда я делаю это: отображается
ConsoleInfoList *CIL_new(void)
{
ConsoleInfoList *list;
if ((list = malloc(sizeof(ConsoleInfoList))))
{
list->count = 0;
list->head = NULL;
list->tail = NULL;
}
return (list);
}
ConsoleInfoList *cil = CIL_new();
if (!cil)
return (NULL);
ConsoleName name;
ConsoleIp ip;
for (int i = 0; i < GetNumberOfConsoles(); ++i)
{
GetConsoleInfo(i, &name, &ip);
cil = CIL_append(cil, name.value, ip.value);
}
for (ConsoleInfo *ci = cil->head; ci; ci = ci->next)
CI_print(ci);
Только первый элемент.
Я знаю, что это очень любительский вопрос, и я уверен, что это будет очень простой ответ, но я не могу решить проблему.
Вы должны показать определение 'CIL_new()', ' ConsoleName' и 'ConsoleIp'. В идеале [sscce] (http://sscce.org/). – tinman
Правильно, я отредактировал :) –
Спасибо за добавление определений, но в идеале вы должны вставить небольшой компилируемый пример проблемы, чтобы у вас было больше шансов для людей заинтересоваться. – tinman