Bonjour tout le monde !
Malgré de nombreux tests je peine à comprendre la différence entre le mode d'accès au fichiers binaire et le mode d'accès au fichiers texte. (wb et w par exemple)
Voici un test concret:
J'obtiens 0 1 2 dans mon fichier et 48 49 50 dans ma console. Mais il n'y a aucune différence si je remplace "w" par "wb" ou "r" par "rb".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 #include <stdio.h> #include <stdlib.h> #define F_SORTIE "sortie" int main(void) { FILE *f_in, *f_out; int tab[] = {48, 49, 50}; /* ecriture du tableau dans F_SORTIE */ if ((f_out = fopen(F_SORTIE, "w")) == NULL) { fprintf(stderr, "\nImpossible d'ecrire dans le fichier %s\n",F_SORTIE); return(EXIT_FAILURE); } fwrite(tab, 3 * sizeof(int), 1, f_out); fclose(f_out); /* lecture dans F_SORTIE */ if ((f_in = fopen(F_SORTIE, "r")) == NULL) { fprintf(stderr, "\nImpossible de lire dans le fichier %s\n",F_SORTIE); return(EXIT_FAILURE); } int tab2[3]; fread(tab2, 3 * sizeof(int), 1, f_in); fclose(f_in); int i; for (i = 0 ; i < 3; i++) printf("%d\t",tab2[i]); printf("\n"); return(EXIT_SUCCESS); }
Dans la FAQ:
- En mode binaire, aucune interprétation des données n'est effectuée.
- En mode texte, certaines séquences de caractères sont interprétés comme étant une fin de ligne ou une fin de fichier
Cela signifierait que le seul intérêt à utiliser "r" serait d'obtenir un EOF lors de la lecture d'un fichier par exemple ? Mais alors pourquoi utilisé "w" ?
Merci de votre lecture.![]()
Partager