Buongiorno a tutti, ho riscontrato un problema in un esercizio che richiedeva di leggere dei dati da un file di testo relativi a una gara e di memorizzarli in una lista. Il file è così formattato: nome;cognome;minuti'secondi''centesimi. Successivamente stampare nome e cognome dei partecipanti.

codice:
#include <stdio.h>
#include <stdlib.h>


typedef struct gara *gara_link;
struct gara{
    char *nome;
    char *cognome;
    int tempo;
    gara_link next;
};


int main()
{
    FILE *fp = fopen ("risultati.txt", "r");
    if (fp == NULL) {
        printf("Impossibile aprire file risultati.txt");
    }




    struct gara user;
    user.nome = malloc (15 * sizeof(char));
    user.cognome = malloc (15 * sizeof(char));
    


    while (!feof(fp)) {
        fscanf(fp, "%20[^;];%30[^;]", user.nome, user.cognome);
    }
    printf("%s %s", user.nome, user.cognome);
    return 0;
}
Mi hanno consigliato di usare la fscanf con l'operatore %20[^;], dove %20 comporta la lettura di 20 caratteri prima del ';' ma non sono sicuro di ciò. Grazie dell'attenzione