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:

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);
}
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".


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.