From 6960fc767fa433fc79a033efe8648de6970bfed5 Mon Sep 17 00:00:00 2001 From: Daniel Rodriguez <danirock99@gmail.com> Date: Sun, 12 Jun 2022 22:53:01 +0200 Subject: [PATCH] =?UTF-8?q?=C3=A9criture/lecture=20des=20records=20sur=20l?= =?UTF-8?q?e=20disque?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 ++- b-tree.c | 5 +++-- main.c | 29 ++++++++++++++++++++++++++++- 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index d9e6619..55acbec 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ *.o main -.vscode \ No newline at end of file +.vscode +*.dat \ No newline at end of file diff --git a/b-tree.c b/b-tree.c index 98049c6..e0e0b75 100644 --- a/b-tree.c +++ b/b-tree.c @@ -194,12 +194,13 @@ b_tree insert_into_tree(b_tree tree, uint64_t key, record_t* record){ record_t* search(b_tree tree, uint64_t key){ int index = find_insertion_index(tree->keys, tree->count, key); - printf("%d\n", index); + //printf("%d\n", index); if(!is_leaf(tree)){ return search(tree->children[index], key); } else{ - printf("leaf: %lu, %lu\n", tree->keys[index-1], key); + //printf("leaf: %lu, %lu\n", tree->keys[index-1], key); + // gerer collisions ? if(tree->keys[index-1] == key){ return tree->children[index]; } diff --git a/main.c b/main.c index f045f7c..7c2afb4 100644 --- a/main.c +++ b/main.c @@ -4,7 +4,6 @@ #include <stdlib.h> #include <string.h> #include <assert.h> -#include <sys/types.h> #include "b-tree.h" #include "record.h" @@ -28,6 +27,28 @@ uint64_t record_hash(record_t* r){ return hash(r->phone); } +void write_database_to_disk(char* fileName, record_t* database, int size){ + FILE* f; + f = fopen(fileName, "wb"); + if(f == NULL){ + assert(false); + } + + fwrite(database, sizeof(record_t), size, f); + fclose(f); +} + +void read_database_from_disk(char* fileName, record_t* database, int size){ + FILE* f; + f = fopen(fileName, "rb"); + if(f == NULL){ + assert(false); + } + + fread(database, sizeof(record_t), size, f); + fclose(f); +} + int main(){ //hash("essdfuihfs"); b_tree node = create_node(); @@ -50,8 +71,14 @@ int main(){ uint64_t a[4] = {0, 2, 4, 5}; printf("%d\n", find_insertion_index(a, 4, 2)); + + //write_database_to_disk("test.dat", r, 1); + record_t* test = malloc(sizeof(record_t)); + read_database_from_disk("test.dat", test, 1); + print_record(*test); free_b(node); free(r); + free(test); return EXIT_SUCCESS; } \ No newline at end of file -- GitLab