Compare commits

...

2 Commits

@ -5,6 +5,14 @@
#include "specification1.h" #include "specification1.h"
/**
* @brief Charge les données des devis d'un fichier dans l'Offre
* @param offre L'offre dans laquelle stocker les données
* @param fichier Le fichier à lire
* @return int Le nombre de devis chargés (-1 si erreur d'ouverture, -2 si en-tête invalide)
* @see lireDevis()
* @see insererDevis()
*/
int chargement(Offre *offre, char fichier[]) int chargement(Offre *offre, char fichier[])
{ {
FILE *flot; FILE *flot;
@ -23,15 +31,82 @@ int chargement(Offre *offre, char fichier[])
return -2; return -2;
} }
offre = (Offre*)malloc(tLog*sizeof(Offre)); char typeTravaux[30];
//TODO Fonction insererDevis(Devis d, Offre *o, char typeTravaux[])
for(int i = 0; i < tLog; i++) for(int i = 0; i < tLog; i++)
offre[i] = lireDevis(flot); {
Devis d;
lireDevis(flot, &d, typeTravaux);
insererDevis(d, offre, typeTravaux);
}
fclose(flot); fclose(flot);
return tLog; return tLog;
} }
Offre lireDevis(FILE *flot) /**
* @brief Lit un seul devis et le stocke dans la structure Devis
* @param flot Le fichier à lire
* @param devis La structure Devis dans laquelle stocker les données
* @param typeTravaux Le type de travaux
* @return void
*/
void lireDevis(FILE *flot, Devis *devis, char *typeTravaux)
{ {
//TODO char ligne[102];
fscanf(flot, "%s", typeTravaux);
fgets(devis->entreprise, 28, flot);
fgets(ligne, sizeof(ligne), flot);
sscanf(ligne, "%d %[^0-9] %d %s", &devis->adresse.numero, devis->adresse.rue, &devis->adresse.codePostal, devis->adresse.ville);
fscanf(flot, "%d", &devis->capital);
fscanf(flot, "%d", &devis->duree);
fscanf(flot, "%d", &devis->cout);
} }
/**
* @brief Sauvegarde tout les devis d'une Offre
* @param offre L'offre à sauvegarder
* @param tLog Le nombre de devis à sauvegarder
* @param fichier Le fichier dans lequel sauvegarder
* @return void
* @see ecrireDevis()
*/
void sauvegarde(Offre offre, int tLog, char fichier[])
{
FILE *flot;
flot = fopen(fichier, "w");
if(flot==NULL)
{
printf("[ERREUR] - Problème dans l'ouverture de %s en écriture !\n");
return;
}
fprintf(flot, "%d\n", tLog);
for(int i = 0; i < tLog; i++)
{
ecrireDevis(flot, offre.travaux, offre.ldevis->devis);
offre.ldevis = offre.ldevis->suiv;
}
fclose(flot);
}
/**
* @brief Ecrit un seul devis dans un fichier
* @param flot Le fichier dans lequel écrire
* @param typeTravaux Le type de travaux
* @param devis Le devis à écrire
* @return void
*/
void ecrireDevis(FILE *flot, char typeTravaux[], Devis devis)
{
fprintf(flot, "%s\n", typeTravaux);
fprintf(flot, "%s\n", devis.entreprise);
fprintf(flot, "%d, %s - %d - %s\n", devis.adresse.numero, devis.adresse.rue, devis.adresse.codePostal, devis.adresse.ville);
fprintf(flot, "%d\n", devis.capital);
fprintf(flot, "%d\n", devis.duree);
fprintf(flot, "%d\n", devis.cout);
}

Loading…
Cancel
Save