Structures de Données & Algo (IGL245)
Thème :
Junior
1 vues ·2/10 leçons

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 int prend 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)

  1. Définissez une structure Etudiant.
  2. Écrivez un tableau de 3 étudiants dans etudiants.dat.
  3. 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.