diff --git a/projet_3.c b/projet_3.c
index b517cafbf3d1386f1105cf83d8628df0e4a27819..e0dd7973b2775ab4f08c1d2961550ebfb54dcd7b 100644
--- a/projet_3.c
+++ b/projet_3.c
@@ -3,6 +3,7 @@
 #include <string.h>
 #include <io.h>
 #include <sys/stat.h>
+#include <sys/mman.h>
 #include <unistd.h>
 
 int is_div(int number, int i) { // Vérifie si i est un diviseur de number.
@@ -91,7 +92,7 @@ void *afficherListe(list_t *liste) { // afficher la liste
     printf("NULL\n");
 }
 
-void ecrire_dans_fichier(char *input, char *output) {
+void lecrire_dans_fichier(char *input, char *output) {
     int fichier_entree = open(input,O_RDONLY) ; // ouverture de fichier en mode lecture
     // O_RDONLY , O_WRONLY ou O_RDWR .
     //  respectivement l'ouverture du fichier en lecture seule, en écriture seule ou en lecture / écriture.
@@ -165,7 +166,77 @@ void ecrire_dans_fichier(char *input, char *output) {
         munmap(mapping, sizeof(int)) ;
     }
 }
-/* int main() {
+
+void ecrire_dans_fichier(char *input, char *output) { // => en utilisant FILE on a plusieurs fonctions qui facilitenet la vie
+
+    FILE * fichier_entree = NULL ;
+    fichier_entree = fopen(input, "r+") ;
+    // "r+": lecture et écriture. Vous pourrez lire et écrire dans le fichier.
+    // Le fichier doit avoir été créé au préalable.
+    FILE * fichier_sortie = NULL ;
+    fichier_sortie = fopen(output, "w+") ;
+    //"w+": lecture et écriture, avec suppression du contenu au préalable.
+    // Le fichier est donc d'abord vidé de son contenu, vous pouvez y écrire,
+    // et le lire ensuite. Si le fichier n'existe pas, il sera créé.
+    if (fichier_entree != NULL || fichier_sortie != NULL) { // si ca ne va pas
+        return;
+    }
+
+    char *line = malloc(sizeof(int)) ; // j'alloue de la memoire pour line
+    while (fgets (line, sizeof(int), fichier_entree) != NULL) {
+
+        int nombre = strtol(line,NULL,0) ;
+        // Cette fonction, signifiant string to long, permet de transformer une chaîne de caractères, contenant
+        // la représentation textuelle d'un entier, en un entier type long.
+
+        void* mapping = mmap(NULL, sizeof(int),PROT_WRITE,MAP_SHARED,fichier_sortie,0) ;
+        /*Établir ne projection en mémoire des fichiers ou des périphériques   (
+        en qq sorte le malloc des fichier
+        argument :
+        1er => L'adresse de départ de la nouvelle projection
+        2eme => longueur
+        3eme => PROT_WRITE On peut écrire dans la zone mémoire.
+        4eme => MAP_SHARED Partager cette projection.
+        5eme => fihcier
+        6eme => ?
+        mmap() renvoie un pointeur sur la zone de mémoire, s'il réussit. En cas d'échec il retourne la valeur MAP_FAILED (c'est-à-dire (void *) -1)
+        http://manpagesfr.free.fr/man/man2/mmap.2.html
+        */
+
+        memcpy(mapping,line, sizeof(int)) ;
+        /*void * memcpy (void * dest, const void * src, size_t n) copie n caractères de la zone mémoire src vers la zone mémoire dest .
+        argument :
+        dest - Il s'agit du pointeur vers le tableau de destination où le contenu doit être copié, transtypé en un pointeur de type void *.
+        src - Il s'agit d'un pointeur vers la source des données à copier, transtypées en un pointeur de type void *.
+        n - Il s'agit du nombre d'octets à copier.
+        Cette fonction renvoie un pointeur vers la destination
+        https://www.tutorialspoint.com/c_standard_library/c_function_memcpy.htm
+        */
+
+        fputc((int) mapping, fichier_sortie) ; // Ecriture dans le fichier
+        list_t *liste = prime_divs(nombre) ;
+        if (liste == NULL) {
+            continue ;
+        }
+        else {
+            node_t *noued = liste -> head;
+            while (noued != NULL)
+            {
+                char *nombre_devient_char = NULL;
+                sprintf(nombre_devient_char, "%d", noued -> nombre_premier) ;
+                /* https://www.geeksforgeeks.org/sprintf-in-c/
+                 * int sprintf (char * str, const char * string, ...)
+                Au lieu d'imprimer sur la console, il stocke la sortie sur le tampon de caractères spécifié dans sprintf
+                 */
+                fputc((int) nombre_devient_char, fichier_sortie) ;
+                noued = noued -> next;
+            }
+            printf("\n");
+        }
+        munmap(mapping, sizeof(int)) ;
+    }
+}
+/*int main(int argc, char *argv[]) {
     // test pour is_div(int number, int i)
     int number = 10 ;
     int number1 = 11 ;
@@ -185,4 +256,4 @@ void ecrire_dans_fichier(char *input, char *output) {
     // je ne vois pas pq ca ne fonctionne pas
     printf("%d\n",afficherListe(liste)) ;
     return 0;
-} */
\ No newline at end of file
+}*/