This program will create link list from text alphabetically.
It is case-sensitive and it will eliminate the marks.
When I run the program, it gives a segmentation fault. I can't find where the problem is. I added the printf() in order to find the mistake but i can't.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
typedef struct NODE {
    char *word;
    int count;
    struct NODE *next;
}NODE;
char *get_word(FILE *fp){
     printf("getWord");
     char *str = (char*)malloc(sizeof(char)*100);
     char c;
     do {
        c = fgetc(fp);
        if (c == EOF) 
            return 0;
        } while (!isalpha(c));
        do {
             printf("getWord");
        *str++ = tolower(c);
        c = fgetc(fp);
        printf("Word");
        } while (isalpha(c));
        return str;
        }
void insert(NODE* sortedList, char *word) { 
   printf("INSERT ");
   char *str = (char*)malloc(sizeof(char)*100);
   if (sortedList == NULL || word < sortedList->word) {
      NODE *ekle;
      ekle=(NODE*)malloc(sizeof(NODE));
      strcpy(ekle->word,word);
      ekle->count = 1;
      ekle->next = sortedList;
      sortedList = ekle;
   }
   else {
        // 
      NODE *current = sortedList->next;
      NODE *pre = sortedList;
      while (current != NULL && word > current->word) { 
         pre = current;
         current = current->next;
      }
      if (current != NULL && word == current->word) {
         (current->count)++;
      }
      else {
         NODE *ekle;
         ekle=(NODE*)malloc(sizeof(NODE));
         strcpy(ekle->word,word);
         ekle->count = 1;
         ekle->next = current;
         pre->next = ekle;
      }
   }
}
void createList(FILE* fp,NODE *n) {
   printf("CREATELIST ");
   char *word;
   strcpy(word,get_word(fp));
   puts(word);
   while (strcmp(word,"")) {
      printf("Create_LİST2");
      insert(n,word);
      word = get_word(fp);
   }
}
NODE *head;
int main(){
    NODE *list=NULL;;
    FILE *fp;
    fp=fopen( "text.txt", "r" );
    head=list;
    while(!feof(fp)){
                     createList(fp,list);
                     }
    while(list->next != NULL){
                     printf("%s", list->word);
                     }
    return 0;
}
 
     
     
     
     
     
     
     
     
    