aboutsummaryrefslogtreecommitdiff
path: root/semestre 3/structures des données/tme/tme3-5/exo1/entreeSortieLC.c
diff options
context:
space:
mode:
Diffstat (limited to 'semestre 3/structures des données/tme/tme3-5/exo1/entreeSortieLC.c')
-rw-r--r--semestre 3/structures des données/tme/tme3-5/exo1/entreeSortieLC.c51
1 files changed, 51 insertions, 0 deletions
diff --git a/semestre 3/structures des données/tme/tme3-5/exo1/entreeSortieLC.c b/semestre 3/structures des données/tme/tme3-5/exo1/entreeSortieLC.c
new file mode 100644
index 0000000..3adb7fb
--- /dev/null
+++ b/semestre 3/structures des données/tme/tme3-5/exo1/entreeSortieLC.c
@@ -0,0 +1,51 @@
+#include "entreeSortieLC.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+Biblio* charger_n_entrees(char* nomfic, int n){
+ Biblio* bib = creer_biblio();
+ FILE* f = fopen(nomfic, "r");
+ if (!f) return NULL;
+ for (int i = 0; i < n; i++){
+ char content[256];
+ char* tmp = fgets(content, 256, f);
+ if (!tmp) return NULL;
+
+ char* parsed[3];
+ char c[256];
+ int k = 0;
+ int l = 0;
+ for (int j = 0; j < 256 && content[j] != '\0'; j++){
+ if (content[j] == ' '){
+ c[k] = '\0';
+ parsed[l++] = strdup(c);
+ k = 0;
+ } else {
+ c[k++] = content[j];
+ }
+ }
+ inserer_en_tete(bib, atoi(parsed[0]), parsed[1], parsed[2]);
+ }
+ if (fclose(f) != 0) return NULL;
+ return bib;
+}
+
+void enregistrer_biblio(Biblio *b, char* nomfic){
+ FILE* f = fopen(nomfic, "w");
+ if (!f) return;
+ Livre* l = b->L;
+ while (l){
+ int ln1 = strlen(l->titre);
+ int ln2 = strlen(l->auteur);
+ int res = fwrite(&(l->num), sizeof(int), 1, f);
+ if (res != 1) return;
+ res = fwrite(l->titre, sizeof(char), ln1, f);
+ if (res != ln1) return;
+ res = fwrite(l->auteur, sizeof(char), ln2, f);
+ if (res != ln2) return;
+ if (fwrite("\n", sizeof(char), 1, f) != 1) return;
+ l = l->next;
+ }
+ if (fclose(f) != 0) printf("erreur lors de la fermeture\n");
+}