Я написал программу, которая создает списки ссылок с двумя значениями.Это работало, когда у меня были только значения int, но теперь, когда я добавил char *, это сообщение об ошибке показывает ошибку во время выполнения: нулевой указатель передан как аргумент 1, который объявлен как null
Как упоминалось ранее, это работало нормальнопока я не добавил char * в конструктор и структуру.Не уверен, что это не так, потому что ошибка появляется в разных строках кода каждый раз, когда я ее запускаю ... Так что мне нужно изменить?
#include <stdio.h>
#include <cs50.h>
#include <string.h>
typedef struct node {
int val;
char* name;
struct node *next;
} node_t;
void addFirst(int value, char* word, node_t** nd) {
//initialize new node, allocate space, set value
node_t * tmp;
tmp = malloc(sizeof(node_t));
tmp->val = value;
strcpy(tmp->name, word);
//let the new nodes next pointer point to the old head
tmp->next = *nd;
//Make tmp the head node
*nd = tmp;
}
int findItem(int value,char* word, node_t *nd) {
if(nd->val == value)
return 0;
while(nd->next != NULL) {
if(nd->val == value && strcmp(word, nd->name) == 0)
return 0;
if(nd->next != NULL)
nd = nd->next;
}
return -1;
}
int main (void) {
node_t *head = malloc(sizeof(node_t));
head->val = 0;
strcpy(head->name, "");
head->next = NULL;
addFirst(15, "word", &head);
addFirst(14,"word2", &head);
printf("%i \n", findItem(15, "word", head));
}