Fiche de révision — Structures de données statiques L1 IG2I
1. Les Structures ( struct )
Permet de créer des types complexes (ex: Livre, Client).
Syntaxe & Mémoire
typedef struct {
char titre[60]; // Tableau statique
char auteur[20];
int annee;
} T_livre; // Alias du type
// T_livre L; -> Réserve 84 octets (60+20+4) en mémoire
Manipulation des Structures
Cas Syntaxe Exemple
Accès direct Point (.) L.annee = 2020
Via pointeur Flèche (->) T_livre *p = &L; p->annee = 2020
Astuce Mémo :
Variable → Point (VP)
Pointeur → Flèche (PF)
LE PIÈGE A ÉVITER
Interdit de faire if (L1 == L2) . Ça ne compile pas ou c’est faux.
Solution : Comparer la mémoire octet par octet.
#include <mem.h>
if (memcmp(&L1, &L2, sizeof(T_livre)) == 0) { /* Identiques */ }
2. Les Fichiers ( FILE * )
Deux modes distincts à ne pas mélanger.
Fichiers Binaires (Données brutes)
Pour stocker des structures entières ( T_livre , tableaux).
Ouverture : fopen("nom", "mode") (modes: "r" lecture, "w" écriture/écrasement, "a" ajout).
Écriture : fwrite(&var, taille, qté, fichier) .
Lecture : fread(&var, taille, qté, fichier) .
Navigation :
rewind(f) : Retour au début.
fseek(f, offset, WHO) : Sauter des octets.
SEEK_SET (Début), SEEK_CUR (Courant), SEEK_END (Fin).
1. Les Structures ( struct )
Permet de créer des types complexes (ex: Livre, Client).
Syntaxe & Mémoire
typedef struct {
char titre[60]; // Tableau statique
char auteur[20];
int annee;
} T_livre; // Alias du type
// T_livre L; -> Réserve 84 octets (60+20+4) en mémoire
Manipulation des Structures
Cas Syntaxe Exemple
Accès direct Point (.) L.annee = 2020
Via pointeur Flèche (->) T_livre *p = &L; p->annee = 2020
Astuce Mémo :
Variable → Point (VP)
Pointeur → Flèche (PF)
LE PIÈGE A ÉVITER
Interdit de faire if (L1 == L2) . Ça ne compile pas ou c’est faux.
Solution : Comparer la mémoire octet par octet.
#include <mem.h>
if (memcmp(&L1, &L2, sizeof(T_livre)) == 0) { /* Identiques */ }
2. Les Fichiers ( FILE * )
Deux modes distincts à ne pas mélanger.
Fichiers Binaires (Données brutes)
Pour stocker des structures entières ( T_livre , tableaux).
Ouverture : fopen("nom", "mode") (modes: "r" lecture, "w" écriture/écrasement, "a" ajout).
Écriture : fwrite(&var, taille, qté, fichier) .
Lecture : fread(&var, taille, qté, fichier) .
Navigation :
rewind(f) : Retour au début.
fseek(f, offset, WHO) : Sauter des octets.
SEEK_SET (Début), SEEK_CUR (Courant), SEEK_END (Fin).