Lista vinculada en c (leer del archivo)

Soy muy nuevo en la programación C y tengo algunas dificultades. Estoy tratando de leer línea de línea a un archivo de texto, y luego agregar cada línea a una lista vinculada simple. He intentado mucho, pero no he encontrado una solución. Hasta ahora, en mi código, puedo leer del archivo, pero no puedo entender cómo guardar la línea de texto por línea y agregarla a la lista vinculada.

Esto es lo que tengo hasta ahora:

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.");
}

Si alguien pudiera darme algunos consejos sobre lo que tengo que hacer a continuación para que funcione, lo agradecería mucho. Estoy acostumbrado a Java, y de alguna manera mi cerebro no puede entender cómo hacer estas cosas en C.

Respuestas a la pregunta(1)

Su respuesta a la pregunta