fread(&c, sizeof(char), 1 , lista);

lista: FILE da cuio leggere;

sizeof(char): è la dimensione del tipo di dati da leggere, in quanto stai leggendo caratteri,

1: numero di caratteri da leggere

&c: indirizzo a partire dal quale inserire i dati letti, in questo caso leggi un solo carattere che sarà memorizzato nella variabile c.

Per leggere una riga alla volta puoi usare:

fgets(c, 10, file);


in cui file indica il file da cui leggere, c deve essere un puntatore a char già allocato con malloc o un array di caratteri, 10 è la lunghezza massima di una riga. Esempio: leggo una alla volta le righe di un file memorizzandole una alla volta in un array c, cancellando di volta in volta la riga precedente:

codice:
    char c[100];
    while(fgets(c, 10, file)!=NULL) { 
          printf("String: %s", c);        
    }