-
Notifications
You must be signed in to change notification settings - Fork 16
/
IO_normale.txt
127 lines (98 loc) · 6.07 KB
/
IO_normale.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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
IO_NORMALE
HEADER ==> #<stdio.h>
off_t #Type utilisé par un file position indicator.
#Utilise des fonctions différentes de pos_t. A un range
#>= long int, tel que renvoyé par ftell() ou utilisé par
#fseek()
ftello(FILE_ADR) ----# Comme ftell(), mais renvoie un off_t et non un long
| int
fseeko(FILE_ADR, # Comme fseek(), mais utilise un OFF_T_VAL, et non un
OFF_T_VAL, INT_VAL) #long int
HEADER ==> #<stdio.h>
MACROS A DEFINIR ==> #_GNU_SOURCE
getline(STR_ADR, #Equivaut à getdelim(STR_ADR, SIZE_T_ADR, '\n',
SIZE_T_ADR, FILE_ADR) #FILE_ADR)
getdelim(STR_ADR, #Lit FILE jusqu'au caractère (char)INT_VAL, et
SIZE_T_ADR, INT_VAL, #enregistre dans STR (dont (char)INT_VAL)
FILE_ADR) #SIZE_T est sensé représenter la taille de la mémoire
#allouée à STR. Si :
# - SIZE_T < nombre d'octets à écrire dans STR
# - la taille allouée à STR est < ce nombre d'octets à
# écrire
# - STR est NULL
#alors :
# - un realloc() a lieu sur STR
# - STR est éventuellement mis à jour
# - le nouveau nombre d'octets alloués à STR est
# affecté à SIZE_T
#Le nombre d'octets alloués avec realloc() est plus
#précis dans le premier cas : essayer donc que SIZE_T
#représente bien la taille de la mémoire allouée à STR
----| Renvoie le nombre d'octets lus, sous forme de
| SSIZE_T_VAL, ou -1 si erreur ou EOF (= aucun (char)
| INT_VAL rencontré).
| Utiliser ce nombre d'octets avec fwrite() pour
| imprimer STR plutôt que d'imprimer "normalement" STR
| avec puts() par exemple, permet d'éviter de tronquer
| STR lors de l'impression s'il contenait des null
| characters avant le '\0' final
HEADER ==> #<stdio.h>
MACROS A DEFINIR ==> #_SVID_SOURCE
getw(FILE_ADR) #Lit un INT_VAL de FILE. Préférer fread()
----| Retourne cet INT_VAL
putw(INT_VAL, FILE_ADR) #Ecrit INT_VAL sur FILE. Préférer fwrite()
----| Retourne 0 si succès, EOF sinon
fcloseall(void) #Ferme tous les streams ouverts et flush leur contenu.
#Automatiquement fait à la fermeture d'un programme,
#donc utile que lors de fermture anormale (tel abort()).
#De plus, attention, car ferme aussi stdin, stdout et
#stderr
----| Renvoie 0 si succès, EOF sinon
HEADER ==> #<limits.h>
MACROS A DEFINIR ==> #_GNU_SOURCE
NL_ARGMAX #Nombre maximum de positions possibles avec le NOMBRE$
#utilisé par printf et scanf
HEADER ==> #<stdio.h>
MACROS A DEFINIR ==> #_GNU_SOURCE
asprintf(STR_ADR, STR2, #Comme sprintf(), sauf que malloc() est utilisé avant
...) #d'utiliser STR, afin de ne jamais avoir de buffer
#overflow.
----| Retourne les mêmes valeurs que sprintf(), mais
| l'erreur peut aussi provenir d'un problème
| d'allocation de mémoire (STR est alors undefined)
HEADER ==> #<stdarg.h>
MACROS A DEFINIR ==> #_GNU_SOURCE
vasprintf(STR_ADR, STR2,#
VA_LIST_VAL) #Comme asprintf(), mais avec une VA_LIST_VAL
HEADER ==> #<stdio.h>
MACROS A DEFINIR ==> #_BSD_SOURCE, _ISOC99_SOURCE
snprintf(STR1, #Comme sprintf(STR1, STR2, ...), mais n'écrit au
SIZE_T_VAL, STR2, ...) #maximum que SIZE_T_VAL - 1 octets, puis rajoute le '\0'
----| Retourne non pas le nombre effectivement écrits, mais
| ceux devant l'être avant l'éventuelle troncature.
| Ainsi, une valeur >= SIZE_T_VAL signifie que STR2 a
| été tronqué
HEADER ==> #<stdarg.h>
MACROS A DEFINIR ==> #_BSD_SOURCE, _ISOC99_SOURCE
vsnprintf(STR1, #
SIZE_T_VAL, STR2,
VA_LIST_VAL) #Comme snprintf(), mais avec une VA_LIST_VAL
HEADER ==> #<stdarg.h>
MACROS A DEFINIR ==> #_XOPEN_SOURCE 600, _ISOC99_SOURCE
vscanf(STR, VA_LIST_VAL)# Comme scanf(), mais avec une VA_LIST_VAL
vfscanf(FILE, STR, #
VA_LIST_VAL) # Comme fscanf(), mais avec une VA_LIST_VAL
vsscanf(STR1, STR2, #
VA_LIST_VAL) # Comme sscanf(), mais avec une VA_LIST_VAL
HEADER ==> #<stdio_ext.h>
MACROS A DEFINIR ==> #_GNU_SOURCE
__freadable(FILE_ADR)---# Renvoie != 0 si FILE peut être lu, 0 sinon
__fwritable(FILE_ADR)---# Renvoie != 0 si FILE peut être écrit, 0 sinon
__freading(FILE_ADR)----# Renvoie != 0 si FILE ne peut pas être écrit, ou si la
| dernière opéation sur FILE était une lecture, ou 0
| sinon
__fwriting(FILE_ADR)----# Renvoie != 0 si FILE ne peut pas être lu, ou si la
| dernière opéation sur FILE était une écriture, ou 0
| sinon