PARTIE 1 (Suite) : COPIE ET FICHIERS BINAIRES
Copie de Fichier (Caractère par Caractère)
Pour copier un fichier, on lit le fichier source caractère par caractère et on écrit dans le fichier destination.
Fonctions Clés :
fgetc(FILE *stream): Lit un caractère.fputc(int char, FILE *stream): Écrit un caractère.feof(FILE *stream): Vérifie si la fin du fichier est atteinte.
// Exemple boucle de copie
char c;
while ((c = fgetc(source)) != EOF) {
fputc(c, destination);
}
Fichiers Binaires
Contrairement aux fichiers texte qui stockent des caractères lisibles (ASCII/UTF-8), les fichiers binaires stockent les données brutes de la mémoire (int, float, struct…).
Avantages :
- Plus compact (un
intprend toujours 4 octets, contre “123456” qui prend 6 octets en texte). - Plus rapide (pas de conversion à faire).
Inconvénients :
- Non lisible par un humain.
- Problèmes de portabilité (Endianness) entre différentes machines.
fwrite et fread
typedef struct {
char nom[50];
int age;
float note;
} Etudiant;
// Écriture
Etudiant e1 = {"Alice", 20, 15.5};
fwrite(&e1, sizeof(Etudiant), 1, fp); // Écrit 1 élément de la taille d'Etudiant
// Lecture
Etudiant e_lue;
fread(&e_lue, sizeof(Etudiant), 1, fp);
Modes d’ouverture : Ajoutez un b (ex: "wb", "rb").
TP 2 & 3 : Pratique
TP 2 : Copie de Fichier
Créez un programme qui prend deux noms de fichiers (source et destination) et copie le contenu de l’un vers l’autre. Affichez le nombre d’octets copiés.
TP 3 : Gestion d’Étudiants (Binaire)
- Définissez une structure
Etudiant. - Écrivez un tableau de 3 étudiants dans
etudiants.dat. - Relisez le fichier pour afficher les données.
Note : Utilisez
sizeof()pour garantir que vous lisez/écrivez exactement la taille de la structure en mémoire.
Prêt à passer à la suite ?
Vous avez terminé cette leçon sur PARTIE 1 (Suite) : COPIE ET FICHIERS BINAIRES. Continuez votre apprentissage avec la prochaine leçon ou explorez d'autres formations.