Ошибка сегментации при добавлении в связанный список - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь создать связанный список и до сих пор продолжаю сталкиваться с ошибкой сегментации.

Через некоторое тестирование мне удалось выяснить, где это происходит, но я не уверен, почему это происходит.

Это срабатывает на линии: tempo->fileName = str;
Это из-замне пытаться назначить указатель или это что-то еще, о чем я не знаю?

typedef struct listnode{
  struct listnode* next;
  char* fileName;
} listnode;

struct listnode* head;

//This section of code will be dedicated to the creation and management
//of the listnode functions

listnode* createNode(char* str, listnode* next){
  listnode* tempo;
  tempo = (listnode*)malloc(sizeof(struct listnode));

  if(tempo = NULL){
    printf("Error creating space for new node.\n");
    exit(0);
  }

  tempo->fileName = str;
  tempo->next = next;

  return tempo;
}

1 Ответ

1 голос
/ 29 октября 2019

Произошла ошибка в условном if(tempo = NULL). Вместо сравнения tempo == NULL вы присваиваете tempo = NULL. Затем вы делаете tempo->fileName = str, который фактически обращается к указателю NULL. То, что вы пишете условное выражение, не делает оператор = оператором равенства, это все равно оператор присваивания. Оператор сравнения: ==.

. Измените условное выражение на:

if(tempo == NULL)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...