Связанный список в c (чтение из файла)

Я очень новичок в C-программировании, и у меня возникают некоторые трудности. Я пытаюсь прочитать строку из строки в текстовый файл, а затем добавить каждую строку в простой связанный список. Я много пробовал, но я не нашел решения. Пока в моем коде я могу читать из файла, но я не могу понять, как сохранить текстовую строку для строки и добавить ее в связанный список.

Это то, что у меня есть до сих пор:

struct list { char string; struct list *next; }; typedef struct list LIST; int main(void) { FILE *fp; char tmp[100]; LIST *current, *head; char c; int i = 0; current = NULL; head = NULL; fp = fopen("test.txt", "r"); if (fp == NULL) { printf("Error while opening file.\n"); exit(EXIT_FAILURE); } printf("File opened.\n"); while(EOF != (c = fgetc(fp))) { printf("%c", c); } if(fclose(fp) == EOF) { printf("\nError while closing file!"); exit(EXIT_FAILURE); } printf("\nFile closed."); } 

Если бы кто-нибудь мог дать мне несколько указаний на то, что мне нужно сделать, чтобы заставить его работать, я был бы очень признателен. Я привык к Java, и каким-то образом мой мозг не может понять, как это делать на C.

 #include  #include  #include  struct list { char *string; struct list *next; }; typedef struct list LIST; int main(void) { FILE *fp; char line[128]; LIST *current, *head; head = current = NULL; fp = fopen("test.txt", "r"); while(fgets(line, sizeof(line), fp)){ LIST *node = malloc(sizeof(LIST)); node->string = strdup(line);//note : strdup is not standard function node->next =NULL; if(head == NULL){ current = head = node; } else { current = current->next = node; } } fclose(fp); //test print for(current = head; current ; current=current->next){ printf("%s", current->string); } //need free for each node return 0; }