-
Notifications
You must be signed in to change notification settings - Fork 16
/
IO_memoire.txt
36 lines (32 loc) · 2.6 KB
/
IO_memoire.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
IO_MEMOIRE
HEADER ==> #<stdio.h>
MACROS A DEFINIR ==> #_GNU_SOURCE
fmemopen(ADR, #Ouvre l'adresse pointée par ADR (en général un STR)
SIZE_T_VAL, STR) #comme un fichier de taille SIZE_T_VAL octets, en mode
#STR. En mode "a" ou "a+", le file position indicator
#est placé après le premier '\0' suivant ADR s'il y en
#a un dans les SIZE_T_VAL premiers octets (sinon erreur)
#Le fichier renvoyé pointe directement vers les mêmes
#data qu'ADR.
#Essayer d'écrire ou de lire au-delà des limites du
#fichier renvoie une erreur. Lors de la fermeture ou du
#flush du stream, un '\0' est rajouté à la fin.
#Si le mode est ouvert en mode binary "b", ce '\0' n'est
#pas rajouté, et le file position indicator est à la fin
#du fichier en mode append
#Si ADR est NULL, un buffer est automatiquement alloué
#avec malloc()
----| Renvoie un FILE_ADR si cela a marché, NULL sinon.
open_memstream(STR_ADR, #Ouvre STR comme un fichier de taille indéterminée
SIZE_T_ADR) #Le stream est ouvert en mode "w+".
#Retourner en arrière tronque le fichier jusqu'au point
#du retour en arrière.
#Il s'agit en fait d'un buffer de STR, dont la mémoire
#est allouée automatiquement avec malloc(), et dont le
#contenu remplace STR lorsque le stream est fermé ou
#flushed, et SIZE_T est updaté avec la taille de STR
#(sans le '\0'). Un '\0' est maintenu à la fin.
#Faire un free(FILE_ADR) avec fermeture.
----| Renvoie un FILE_ADR si cela a marché, NULL sinon.