Sorry for my poor code, but I can't understand why this code causes segmentation fault 11 when I run this on my mac terminal. I want to make the program read full sentences intact one by one using linked list, but it doesn't work.
I guess sentences in some.txt aren't getting inserted in linkNode. How can I fix it? 
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX_NUMBER 1024 
typedef struct linkNode {
    char *element;
    struct linkNode *link;
} linkNode;
typedef struct {
    linkNode *top;
    int element_number;
} linkType;
void error(char* message) {
    fprintf(stderr, "%s", message);
}
void init(linkType *L) {
    L->top = NULL;
    L->element_number = 0;
}
linkNode *createStack() {
    linkNode *temp = (linkNode *) malloc(sizeof(linkNode));
    temp->element = (char *) malloc(sizeof(char) * MAX_NUMBER + 1);
    return temp;
}
void insert(linkType *L, char* new_data) {
    linkNode *temp = createStack();
    //temp->element = new_data;
    strcpy(temp->element, new_data);
    temp->link = L->top;
    L->element_number++;
    L->top = temp->link;    
}
char *delete(linkType *L) {
    if (L->element_number == 0) {
        error("list empty\n");
    }
    linkNode *temp = L->top;
    char * temp_element;
    //temp->element = L->top->element;
    strcpy(temp_element, L->top->element);
    L->top = L->top->link;
    L->element_number--;
    free(temp);
    return temp_element;
}
char *buffer_making() {
    char *buffer = (char *) malloc(sizeof(char) * MAX_NUMBER + 1);
    return buffer;
}
char *buffer_erase(char *buffer) {
    free(buffer);
    return NULL;
}
int main() {
    linkType *q = (linkType *) malloc(sizeof(linkType));
    init(q);
    FILE *file_pointer; 
    char *file1;
    file1 = (char *) malloc(sizeof(file1) + 1); 
    char *file2;
    file2 = (char *) malloc(sizeof(file2) + 1);
    printf("input file names:\n");
    scanf("%s", file1);
    getchar();
    file_pointer = fopen(file1, "r");
    while (!feof(file_pointer)) {
        char *buffer1 = buffer_making();
        fscanf(file_pointer,"%s",buffer1);
        ///////////
        printf("%s\n",buffer1);
        insert(q,buffer1);
        buffer_erase(buffer1);
    }
    printf("point3\n");
    while (!(q->element_number == 0)) {
        printf("%s\n", delete(q));
    }
    free(file1);
    free(file2);
    return 0;
}
//printf("point1\n");
 
     
    