/**
 * @file lireAdresses.c
 * Projet sem05-td-C3
 * @author l'équipe pédagogique 
 * @version 1 18/01/06
 * @brief corrige du TD n°5 - Exercice 3
 * Structures de données et algorithmes - DUT1 Paris 5
 */

#include <stdio.h>
#include <string.h>

#define MAX 31
#define MAX1 100

struct Adresse {
  char prenom[MAX], nom[MAX];
  float numero;
  char rue[MAX];
  int codePostal;
  char ville[MAX];
};
typedef struct Adresse Adresse;

void afficherAdresse(Adresse* a) {
  printf("%s %s\n%.1f\n%s\n%d %s\n",a->prenom, a->nom,
  	a->numero, a->rue, a->codePostal, a->ville);
 }

 
 Adresse lireAdresse(FILE* fic) {
   Adresse a;
   char chaine[MAX1];
   fgets(chaine,MAX1,fic);
   sscanf(chaine,"%s %s",a.prenom,a.nom);
   fgets(chaine,MAX1,fic);
   sscanf(chaine,"%f",&a.numero);
   fgets(a.rue, MAX+1, fic);
   a.rue[strlen(a.rue)-1]=0; //on ote le '\n'
   fscanf(fic,"%d",&a.codePostal);
   fgets(a.ville, MAX+1, fic);
   return a;
  }

int main() {
  char nom[80];
  Adresse adresse;
  printf("Saisir le nom du fichier des adresses\n");
  gets(nom);
  FILE* fic = fopen(nom,"r");
   if (!fic) {
   	printf("Ouverture impossible\n");
   	exit(1);
   }
 
  while (! feof(fic)) {
    adresse = lireAdresse(fic);
    if (ferror(fic)) {
      printf("La lecture a echoue\n");
      break;
    }
    afficherAdresse(&adresse);
  }
  close(fic);
}
