ipAddress
- это просто указатель на символ, который не инициализирован. Вы не выделили память, на которую можно указать ipAddress
Когда вы делаете
scanf("%s",temp1->ipAddress);
Ожидается, что temp1-> ipAddress указывает на массив символов, который может быть статически или динамически размещен.
В вашем случае вы можете изменить
char *ipAddress;
char *domainName;
до
char ipAddress[16]; // aaa.bbb.ccc.ddd
char domainName[MAX_DOMAIN_LEN]; // choose max length suitably.
Кроме того, после выделения нового узла с помощью malloc
вы не инициализируете указатель next
недавно созданного узла. Вы должны делать:
struct table * temp1 = (struct table *)malloc(sizeof(struct table));
temp1->next = NULL; // this is missing.
Также, когда список изначально пуст, head
будет NULL
, поэтому блок if будет выполнен. Вы должны указать head
на только что созданный узел, на который указывает temp1
, а не temp
:
if(!temp)
{
head = temp; // this should be head = temp1;
}