Ciao a tutti, io ho creato un file binario in C che contiene una sorta di rubrica caratterizzata dalla seguente struttura:

codice:
typedef struct{
  char nominativo[DIMN];
  char telefono[DIMT];
  char datanascita[DIMD];
  char comune[DIMC];
}Contatto;
ho creato una funzione che permette all'utente di inserire nuovi contatti quindi immaginatevi ora il file binario con all'intero 2 o 3 contatti inseriti dall'utente tutti caratterizzati dalla stessa struttura Contatto come sopra.

Ora volevo chiedervi: se volessi stampare a video una specie di "rubrica" del tipo:

Nominativo Telefono Data di nascita Comune

nominativo1 tel1 data1 comune1
nominativo2 tel2 data2 comune2
nominativo3 tel3 data3 comune3

ho fatto una funzione del genere:

codice:
/*
Nome: stampa_tutto
Descrizione: stampa la rubrica
Input: il puntatore al file binario, gli elementi presenti in rubrica
Output: nessuno
*/
void stampa_tutto(FILE *fp, int n){

  Contatto contatto;
  char nominativo[DIMN],telefono[DIMT],datanascita[DIMD],comune[DIMC];
  int i;
  
  for(i=0;i<n;i++){
    fseek(fp,i*sizeof(contatto),SEEK_SET);
    fread(nominativo,1,DIMN,fp);
    fread(telefono,1,DIMT,fp);
    fread(datanascita,1,DIMD,fp);
    fread(comune,1,DIMC,fp);
    printf("%s   %s   %s   %s",nominativo,telefono,datanascita,comune);
  }
  printf("\n");
return;
}
ma stampa cose senza senso miste a cose "semi-corrette"....sicuramente non funziona come dovrebbe.... se utilizzo fseek(fp,i*sizeof(contatto),SEEK_SET);
mi sposto di blocco in blocco fra i contatti ma non so come accedere ad esempio al dato "telefono" del terzo contatto, oppure al dato "comune" del primo contatto, ecc...

qualcuno mi dia delle dritte!!!! Grazie mille!