(bahasa C)terkadang saya dpt "BUS ERROR" terkadang "SEGMENTATION FAULT" pad linked list

saya sedang belajar membaut single linked list , tapi sudah seminggu saya belajar tpi tdk berjalan sesuia harapan, padahal sy sudah mengikuit sesuai pada tutorial, tapi dengan sedikti modifikasi.Tolong cek kode sy, bagaimna cata membuat function unutk membuat node lalu menampilkannya.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct Book
{
    char *title;
    char *author;
    int year;

    // pointer next
    struct Book *next;
} myBook;

myBook *head = NULL;

myBook *current;

void createBook(myBook *head,char *t,char *a,int y){
    // buat space baru
    myBook *newBook;
    newBook = NULL;
    newBook = (myBook*) malloc(sizeof(myBook));
    strcpy(newBook->title,t);
    strcpy(newBook->author,a);
    newBook->year = y;

    if (head == NULL){
        head = newBook;
        head->next = NULL;
    }else{
        while (head != NULL)
            head=head->next;
        head = newBook;
        newBook->next = NULL;
    }
}

void printBook(){
    current = head;
    while (current != NULL){
        printf("Judul   : %s\n",current->title);
        printf("Penulis : %s\n",current->author);
        printf("Tahun   : %d\n",current->year);

        current = current->next;
    }

}

int main()
{
    char *judul, *penulis;
    int tahun;

    printf("Masukkan Judul   : ");scanf("%s",judul);
    printf("Masukkan Penulis : ");scanf("%s",penulis);
    printf("Masukkan Tahun   : ");scanf("%d",&tahun);

    createBook(head,judul,penulis,tahun);
    printBook();
    return 0;

}
avatar fyz08
@fyz08

1 Kontribusi 0 Poin

Diperbarui 4 jam yang lalu

1 Jawaban:

segmentation fault karena mengakses alamat memory yang belum dialokasikan, ini kreana salah dalam mendeklarasikan string. coba ganti:

char * judul;
char * penulis;

menjadi

char judul[50];
char penulis[50];
avatar fahmifauzirahman
@fahmifauzirahman

2 Kontribusi 0 Poin

Dipost 4 jam yang lalu

Login untuk ikut Jawaban