Ciao a tutti avrei un problemino anzi più che problemino lo chiamerei dubbio. Nel seguente listato che vi propongo io inserisco le info da file txt in memoria centrale. Tutto va bene ma al momento della stampa per accettarmi se tutto è andato bene mi stampa dei valori spazzatura che io non ho inserito. Mi potete aiutare???

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

typedef struct accesso{
    int codice;
    int ora;
    int minuti;
    int modalita;
}TipoElemAccesso;

typedef struct nodosublista{
    TipoElemAccesso info;
    struct nodosublista *next;
}NodoListaAccessi;

typedef NodoListaAccessi *TipoListaAccessi;

typedef struct info{
    int giorno;
    int mese;
    int naccessi;
    TipoListaAccessi elenco;
}TipoElemInfo;

typedef struct nodolista{
    TipoElemInfo info;
    struct nodolista *next;
}NodoListaInfo;

typedef NodoListaInfo *TipoListaInfo;
/*** END STRUCTURE ***/


/********** FUNZIONE A **********/
TipoListaInfo RicercaData(TipoListaInfo lis,TipoElemInfo elem){

    while(lis!=NULL){
        if((lis->info.giorno==elem.giorno) &&
            (lis->info.mese==elem.mese))
            return(lis);
            lis=lis->next;
        }
        return(lis);
}

void InserisciInTestaAccesso(TipoListaAccessi *lis,TipoElemAccesso elem){
    TipoListaAccessi aux;

    aux=(TipoListaAccessi)malloc(sizeof(NodoListaAccessi));
    aux->info=elem;
    aux->next=*lis;
    *lis=aux;
}

void InserisciInTestaDataAccesso(TipoListaInfo *lis,TipoElemInfo elem){
    TipoListaInfo aux;

    aux=(TipoListaInfo)malloc(sizeof(NodoListaAccessi));
    aux->info=elem;
    aux->info.naccessi=1;
    aux->info.elenco=NULL;
    aux->next=*lis;
    *lis=aux;
}

void InserisciInLista(TipoListaInfo *lis,TipoElemInfo elem1,TipoElemAccesso elem2){
    TipoListaInfo paux;

    paux=RicercaData(*lis,elem1);
    if(paux!=NULL){
        InserisciInTestaAccesso(&(paux->info.elenco),elem2);
        paux->info.naccessi++;
    }
    else{
        InserisciInTestaDataAccesso(lis,elem1);
        paux=RicercaData(*lis,elem1);
        InserisciInTestaAccesso(&(paux->info.elenco),elem2);
    }
}


void LeggiFile(TipoListaInfo *lis,char *nf){
    FILE *fp;
    TipoElemInfo elem1;
    TipoElemAccesso elem2;

    if(!(fp=fopen(nf, "r"))){
        perror("Errore nella creazione del file!\n");
        exit(1);
    }

    while(fscanf(fp,"%d/%d%d:%d%d%d\n",&elem1.giorno,
                                       &elem1.mese,
                                       &elem2.ora,
                                       &elem2.minuti,
                                       &elem2.codice,
                                       &elem2.modalita)!=EOF)
        InserisciInLista(lis,elem1,elem2);

    fclose(fp);
    printf("\n\nInserimento Completato Con Successo!\n");
}

/********** FUNZIONE OPZIONALE ***********/
void StampaSuVideo(TipoListaInfo lis){
    TipoListaAccessi v;

    while(lis!=NULL){
        printf("\nData Accesso: %d/%d\n", lis->info.giorno,lis->info.mese);
            v=lis->info.elenco;
                while(v!=NULL){
                    printf("%d:%d %d %d\n", v->info.ora,v->info.minuti,v->info.codice,v->info.modalita);

                v=v->next;
                }
        lis=lis->next;
}
}

/****************** MAIN *******************/
int main(void){
    int scelta;
    char nf[20];
    TipoListaInfo archivio;


    do{
        printf("\n\n\t\t----------------- Gestione Accessi ----------------\n\n");
        printf("\t\t|      1. Carica Info In Memoria                  |\n");
        printf("\t\t|      2. Stampa Su Video Info                    |\n");
        printf("\t\t|      0. Fine Programma                          |\n\n");
        printf("\t\t---------------------------------------------------\n");



        printf("\n\nInserire scelta: ");
        scanf("%d", &scelta);
        fflush(stdin);

        switch(scelta){
            case 1:
                printf("Inserire nome file: ");
                gets(nf);
                fflush(stdin);
                LeggiFile(&archivio,nf);
                break;
            case 2:
                StampaSuVideo(archivio);
                break;
            case 0:
                printf("Fine Programma\n");
                return 0;
            default:
                printf("Scelta Errata! RIPROVA\n");
        }


    }while(scelta!=0);

    return 0;

}
nel file esterno che si deve caricare in memoria le informazioni sono le seguenti:

21/7 16:32 1234 0

Rispettivamente:

Giorno/Mese Ora:Minuti NumDipendente ModalitàAccesso(1.Uscita 0.Entrata). Provatelo voi stessi