/*
TITOLO: Record
DESCRIZIONE: Legge da un file formattato tutti i dati presenti e li
stampa ordinati secondo una data struttura.
*/

/*
AUTORE: Farinelli Agnese (farinelli.agnese@libero.it)
COPYRIGHT OF: "Elf's Spirit - Thalionwen's Little Home Page"
DESCRIZIONE: Laboratorio di programmazione
*/

#include <stdio.h>
#include "my_lib.h"

/*Struttura DATA DI NASCITA*/
  struct data{
    int giorno;
    int mese;
    int anno;
  };
struct data nascita;
  
/*Struttura RECORD*/
  struct record {
    char nome[200];
    char cognome[200];
    struct data nascita;
    char luogo_di_nascita[200];
    char nazione[200];
  };

void new_prints(struct record x);

main(){
  
  char nomefile[100];
  struct data nascita;
  struct record dati;
  int scelta;
  
  printf("Inserisci il nome del file che vuoi leggere:\n--> ");
  scanf("%s",nomefile);
  FILE *fp;
  fp=fopen(nomefile,"r");
  
  printf("\n");
  printf("Vuoi:\n(1)visualizzare i dati formattati.\n(2)compiere una ricerca tra i dati.\n");
  printf("--> ");
  scanf("%d",&scelta);
  printf("\n");
  
  if(scelta==1){
  char c;
  char nome[]="NOME";
  char cognome[]="COGNOME";
  char data[]="NATO il:";
  char luogo[]="NATO a:";
  char nazione[]="NAZIONALITA'";
  printf("Visualizzo i dati formattati letti da file:\n");
  printf("%7s\t %11s\t %11s\t %11s\t %11s\t\n",nome,cognome,data,luogo,nazione);
     
  while((c=getc(fp))!=EOF){
    fscanf(fp,"%s %s %d %d %d %s %s",&dati.nome,&dati.cognome,&dati.nascita.giorno,&dati.nascita.mese,&dati.nascita.anno,&dati.luogo_di_nascita,&dati.nazione);
    new_prints(dati);
  }

  printf("\n");
}

 if(scelta==2){

       int found;
       char string[100];
       int stringdata;
       int criterio;
       
       found=0;
       printf("Cerchi:\n(1)un nome.\n(2)una data.\n--> ");
       scanf("%d",&criterio);
       
       if(criterio==1){
	printf("\nInserisci l'elemento che vuoi ricervare:\n---> ");
	scanf("%s",string);
	while((found = readline(fp,string)) != 0){
	if((compstring(string,fp)) == 1)printf("%s", string);
	}
	}

	if(criterio==2){
	printf("Inserisci l'elemento che vuoi ricervare:\n---> ");
	scanf("%d",&stringdata);
	}
}
  fclose(fp);

 

}



/*Funzione di STAMPA della STRUTTURA(2.0)*/
void new_prints(struct record x){

     printf("%7s\t %11s\t %d-%d-%d\t %11s\t %11s\t\n",x.nome,x.cognome,x.nascita.giorno,x.nascita.mese,x.nascita.anno,x.luogo_di_nascita,x.nazione);  
     
}

/*Funzione di STAMPA della STRUTTURA(1.0)*/
void prints(struct record x){

    printf("NOME: %s\n",x.nome);
    printf("COGNOME: %s\n",x.cognome);
    printf("DATA di NASCITA: %d-%d-%d\n",x.nascita.giorno,x.nascita.mese,x.nascita.anno);
    printf("LUOGO di NASCITA: %s\n",x.luogo_di_nascita);
    printf("NAZIONALITA': %s\n",x.nazione);
    printf("\n");


}
