Exercices corrigés en langage C : Les structures
Maîtriser les structures en langage C exige davantage qu’une simple lecture de la syntaxe. Cette page réunit plus de 30 exercices corrigés et cas pratiques pour apprendre à déclarer une struct, accéder à ses membres, manipuler un tableau de structures C, utiliser un pointeur sur structure, créer une structure imbriquée ou encore gérer l’allocation dynamique avec malloc. Les premiers exercices abordent les structures de base, les chaînes de caractères et les tableaux, tandis que les activités avancées introduisent typedef struct, le passage d’une structure en paramètre, le retour de structure, les fichiers et les listes chaînées.
Plusieurs outils interactifs d’apprentissage permettent de construire un parcours adapté à chaque niveau : générateur d’exercices corrigés, sélection par thème, cas pratiques de gestion d’étudiants, de bibliothèque, d’employés, de stock, de clients ou de produits, support learning sous forme de fiches pédagogiques, corrections de programmes, erreurs fréquentes, indices, défis supplémentaires et fonctions de copie du code. L’ensemble forme un véritable support de TD et TP sur les structures en C, destiné aux débutants, aux étudiants et à toute personne souhaitant progresser par la pratique.
Structures en langage C : exercices corrigés, cas pratiques, tableaux, pointeurs et guide complet
Les structures en langage C permettent de regrouper plusieurs variables de types différents au sein d’un même objet. Elles sont omniprésentes dans les projets universitaires, les concours d’informatique, les applications de gestion, les systèmes embarqués ainsi que le développement logiciel. Cette bibliothèque rassemble des exercices corrigés sur les structures en C, des programmes complets, des exemples commentés, des QCM, des cas pratiques, des manipulations de tableaux de structures, des structures imbriquées, des pointeurs sur structures, des allocations dynamiques et des applications professionnelles afin de maîtriser cette notion essentielle de la programmation en C.
💻 Apprendre les structures en langage C : guide pour débutants
Une structure en langage C permet de regrouper plusieurs informations de types différents dans une seule variable. Ce tutoriel présente la syntaxe struct C, la déclaration d’une structure, la création de variables structurées et plusieurs exemples simples à reproduire.
Qu’est-ce qu’une structure en langage C ?
Une structure est un type de données personnalisé. Elle sert à réunir, sous un même nom, plusieurs variables appelées membres ou champs.
Une structure peut, par exemple, représenter un étudiant avec son nom, son âge et sa moyenne. Chaque donnée conserve son propre type.
Syntaxe de struct en C
La syntaxe générale d’une structure commence par le mot-clé
struct, suivi du nom de la structure et de la liste de ses
membres.
struct NomStructure {
type membre1;
type membre2;
type membre3;
};Le point-virgule placé après l’accolade fermante est obligatoire.
Exemple de syntaxe struct C
struct Etudiant {
char nom[50];
int age;
float moyenne;
};
Cette déclaration crée un nouveau modèle de données appelé
struct Etudiant.
Comment déclarer une structure en C ?
La déclaration d’une structure définit les informations qu’elle pourra contenir. Elle ne crée pas encore automatiquement une variable.
struct Produit {
int reference;
char designation[60];
float prix;
int quantite;
};
La structure Produit comprend quatre champs :
referencepour identifier le produit ;designationpour enregistrer son nom ;prixpour conserver son prix ;quantitepour suivre le stock disponible.
Comment créer une variable de type structure ?
Après la déclaration de la structure, une variable structurée peut être
créée en utilisant le mot-clé struct.
struct Etudiant eleve1;
La variable eleve1 peut maintenant stocker le nom, l’âge
et la moyenne d’un étudiant.
Créer plusieurs variables
struct Etudiant eleve1;
struct Etudiant eleve2;
struct Etudiant eleve3;Déclaration directe
struct Etudiant {
char nom[50];
int age;
float moyenne;
} eleve1, eleve2;eleve1 et eleve2.Comment accéder aux membres d’une structure ?
L’opérateur point . permet d’accéder aux membres d’une
variable de type structure.
eleve1.age = 20;
eleve1.moyenne = 14.5;
Pour une chaîne de caractères, la fonction strcpy() peut
être utilisée.
strcpy(eleve1.nom, "Sofia");L’accès à un membre suit donc la forme suivante :
nomVariable.nomMembreExemple complet de structure en C
Le programme suivant crée une structure représentant un étudiant, lui attribue des valeurs, puis affiche son contenu.
#include <stdio.h>
#include <string.h>
struct Etudiant {
char nom[50];
int age;
float moyenne;
};
int main() {
struct Etudiant eleve1;
strcpy(eleve1.nom, "Sofia");
eleve1.age = 20;
eleve1.moyenne = 14.5;
printf("Nom : %s\n", eleve1.nom);
printf("Age : %d ans\n", eleve1.age);
printf("Moyenne : %.2f\n", eleve1.moyenne);
return 0;
}Résultat attendu
Nom : Sofia
Age : 20 ans
Moyenne : 14.50Initialiser une structure dès sa création
Une structure peut être initialisée au moment de la déclaration de la variable.
struct Etudiant eleve1 = {
"Sofia",
20,
14.5
};Les valeurs doivent respecter l’ordre des membres défini dans la structure.
Initialisation par membre
struct Etudiant eleve2 = {
.nom = "Yassine",
.age = 22,
.moyenne = 16.25
};Utiliser typedef avec une structure C
Le mot-clé typedef permet de créer un nom plus court pour
la structure. Il devient alors inutile de répéter struct
lors de chaque déclaration.
typedef struct {
char nom[50];
int age;
float moyenne;
} Etudiant;Une variable peut ensuite être déclarée simplement :
Etudiant eleve1;
Etudiant eleve2;Cette écriture est courante dans les programmes en langage C comportant plusieurs structures.
Petit exercice pour débutant
Créez une structure Livre contenant les informations
suivantes :
- un titre ;
- un auteur ;
- un nombre de pages ;
- un prix.
Correction
#include <stdio.h>
#include <string.h>
struct Livre {
char titre[100];
char auteur[80];
int nombrePages;
float prix;
};
int main() {
struct Livre livre1;
strcpy(livre1.titre, "Introduction au langage C");
strcpy(livre1.auteur, "A. Martin");
livre1.nombrePages = 240;
livre1.prix = 24.90;
printf("Titre : %s\n", livre1.titre);
printf("Auteur : %s\n", livre1.auteur);
printf("Pages : %d\n", livre1.nombrePages);
printf("Prix : %.2f euros\n", livre1.prix);
return 0;
}Erreurs fréquentes chez les débutants
- oublier le point-virgule après la définition de la structure ;
- confondre le nom de la structure et le nom de la variable ;
- utiliser
=pour copier une chaîne de caractères ; - oublier d’inclure
string.havant d’utiliserstrcpy(); - utiliser une variable structurée avant de l’avoir déclarée ;
- confondre l’opérateur point
.avec l’opérateur flèche->; - initialiser les valeurs dans un ordre différent de celui des membres.
Résumé du tutoriel sur les structures C
Pour apprendre les structures en C, retenez les règles suivantes :
structpermet de définir une structure ;- les membres peuvent avoir des types différents ;
- l’opérateur
.donne accès aux membres d’une variable ; typedefsimplifie les déclarations ;strcpy()sert à affecter une chaîne de caractères ;- une structure peut représenter un étudiant, un produit, un livre ou un client.
La maîtrise de cette syntaxe prépare l’apprentissage des tableaux de structures, des pointeurs sur structures, des fichiers et des listes chaînées en langage C.
Structures en C : apprendre struct, typedef, malloc, les tableaux et les pointeurs grâce à des exercices corrigés
⬇️⬇️
Exercices corrigés sur les structures en langage C : exemples, programmes, QCM et cas pratiques
Les structures en langage C sont une manière essentielle de regrouper différentes variables sous un même type de données. Elles permettent de modéliser des données complexes de manière plus intuitive et structurée. Cet article présente quelques exercices corrigés pour comprendre et maîtriser les structures en C.
Exercice 1 : Définition et utilisation de structures de base
Énoncé
Définissez une structure Personne contenant les champs suivants : nom, âge, et taille. Créez une variable de type Personne, assignez des valeurs à ses champs, et affichez-les.
Solution
#include <stdio.h>
#include <string.h>
// Définition de la structure Personne
struct Personne {
char nom[50];
int age;
float taille;
};
int main() {
// Déclaration d'une variable de type Personne
struct Personne p1;
// Assignation des valeurs aux champs de la structure
strcpy(p1.nom, "Alice");
p1.age = 30;
p1.taille = 1.75;
// Affichage des valeurs
printf("Nom : %s\n", p1.nom);
printf("Âge : %d\n", p1.age);
printf("Taille : %.2f m\n", p1.taille);
return 0;
}Exercice 2 : Structure imbriquée
Énoncé
Définissez une structure Date contenant les champs jour, mois, et année. Ensuite, définissez une structure Employe contenant un champ nom et un champ date_naissance de type Date. Créez une variable de type Employe, assignez des valeurs à ses champs, et affichez-les.
Solution
#include <stdio.h>
#include <string.h>
// Définition de la structure Date
struct Date {
int jour;
int mois;
int annee;
};
// Définition de la structure Employe
struct Employe {
char nom[50];
struct Date date_naissance;
};
int main() {
// Déclaration d'une variable de type Employe
struct Employe emp1;
// Assignation des valeurs aux champs de la structure Employe
strcpy(emp1.nom, "Bob");
emp1.date_naissance.jour = 15;
emp1.date_naissance.mois = 8;
emp1.date_naissance.annee = 1990;
// Affichage des valeurs
printf("Nom : %s\n", emp1.nom);
printf("Date de naissance : %02d/%02d/%d\n",
emp1.date_naissance.jour,
emp1.date_naissance.mois,
emp1.date_naissance.annee);
return 0;
}Exercice 3 : Tableau de structures
Énoncé
Définissez une structure Livre contenant les champs titre, auteur, et année de publication. Créez un tableau de 3 livres, assignez des valeurs à chaque livre, et affichez-les.
Solution
#include <stdio.h>
#include <string.h>
// Définition de la structure Livre
struct Livre {
char titre[100];
char auteur[50];
int annee_publication;
};
int main() {
// Déclaration d'un tableau de 3 livres
struct Livre bibliotheque[3];
// Assignation des valeurs au premier livre
strcpy(bibliotheque[0].titre, "Le Petit Prince");
strcpy(bibliotheque[0].auteur, "Antoine de Saint-Exupéry");
bibliotheque[0].annee_publication = 1943;
// Assignation des valeurs au deuxième livre
strcpy(bibliotheque[1].titre, "1984");
strcpy(bibliotheque[1].auteur, "George Orwell");
bibliotheque[1].annee_publication = 1949;
// Assignation des valeurs au troisième livre
strcpy(bibliotheque[2].titre, "Le Seigneur des Anneaux");
strcpy(bibliotheque[2].auteur, "J.R.R. Tolkien");
bibliotheque[2].annee_publication = 1954;
// Affichage des valeurs
for (int i = 0; i < 3; i++) {
printf("Livre %d :\n", i + 1);
printf(" Titre : %s\n", bibliotheque[i].titre);
printf(" Auteur : %s\n", bibliotheque[i].auteur);
printf(" Année de publication : %d\n\n", bibliotheque[i].annee_publication);
}
return 0;
}Exercice 4 : Structure avec pointeurs
Énoncé
Définissez une structure Etudiant contenant les champs nom, âge, et une liste de notes (tableau de flottants). Allouez dynamiquement de la mémoire pour les notes et affichez les informations de l’étudiant.
Solution
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Définition de la structure Etudiant
struct Etudiant {
char nom[50];
int age;
float *notes;
int nombre_notes;
};
int main() {
// Déclaration d'une variable de type Etudiant
struct Etudiant etu;
// Assignation des valeurs aux champs de la structure
strcpy(etu.nom, "Claire");
etu.age = 20;
etu.nombre_notes = 3;
// Allocation dynamique de mémoire pour les notes
etu.notes = (float *)malloc(etu.nombre_notes * sizeof(float));
if (etu.notes == NULL) {
printf("Erreur d'allocation de mémoire.\n");
return 1;
}
// Assignation des valeurs aux notes
etu.notes[0] = 15.5;
etu.notes[1] = 17.0;
etu.notes[2] = 18.5;
// Affichage des valeurs
printf("Nom : %s\n", etu.nom);
printf("Âge : %d\n", etu.age);
printf("Notes : ");
for (int i = 0; i < etu.nombre_notes; i++) {
printf("%.2f ", etu.notes[i]);
}
printf("\n");
// Libération de la mémoire allouée
free(etu.notes);
return 0;
}Synthèse 1
Ces exercices illustrent comment les structures peuvent être utilisées en C pour organiser et manipuler des données de manière efficace. La compréhension et la pratique de ces concepts sont essentielles pour développer des programmes complexes et bien structurés. Les structures permettent de regrouper des informations variées sous un même type, facilitant ainsi leur gestion et leur utilisation dans des programmes plus larges.
Les structures en C sont extrêmement utiles pour diverses applications réelles. Voici quelques cas d’applications typiques où les structures jouent un rôle crucial :
1. Gestion des bases de données
Cas d’application : Système de gestion de bibliothèque
Un système de gestion de bibliothèque peut utiliser des structures pour représenter des livres, des membres et des transactions d’emprunt.
#include <stdio.h>
#include <string.h>
#define MAX_LIVRES 100
#define MAX_MEMBRES 50
// Structure pour représenter un livre
struct Livre {
char titre[100];
char auteur[50];
int annee;
int disponible; // 1 pour disponible, 0 pour emprunté
};
// Structure pour représenter un membre de la bibliothèque
struct Membre {
char nom[50];
int id;
};
// Structure pour représenter une transaction d'emprunt
struct Emprunt {
int id_membre;
char titre_livre[100];
char date_emprunt[11]; // Format YYYY-MM-DD
char date_retour[11]; // Format YYYY-MM-DD
};
struct Livre bibliotheque[MAX_LIVRES];
struct Membre membres[MAX_MEMBRES];
struct Emprunt emprunts[MAX_LIVRES];
int nombre_livres = 0;
int nombre_membres = 0;
int nombre_emprunts = 0;
// Fonctions pour ajouter des livres, des membres, enregistrer des emprunts, etc.
void ajouterLivre(char* titre, char* auteur, int annee) {
strcpy(bibliotheque[nombre_livres].titre, titre);
strcpy(bibliotheque[nombre_livres].auteur, auteur);
bibliotheque[nombre_livres].annee = annee;
bibliotheque[nombre_livres].disponible = 1;
nombre_livres++;
}
void ajouterMembre(char* nom, int id) {
strcpy(membres[nombre_membres].nom, nom);
membres[nombre_membres].id = id;
nombre_membres++;
}
void enregistrerEmprunt(int id_membre, char* titre_livre, char* date_emprunt, char* date_retour) {
strcpy(emprunts[nombre_emprunts].titre_livre, titre_livre);
emprunts[nombre_emprunts].id_membre = id_membre;
strcpy(emprunts[nombre_emprunts].date_emprunt, date_emprunt);
strcpy(emprunts[nombre_emprunts].date_retour, date_retour);
nombre_emprunts++;
// Marquer le livre comme emprunté
for (int i = 0; i < nombre_livres; i++) {
if (strcmp(bibliotheque[i].titre, titre_livre) == 0) {
bibliotheque[i].disponible = 0;
break;
}
}
}
int main() {
ajouterLivre("Le Petit Prince", "Antoine de Saint-Exupéry", 1943);
ajouterMembre("Alice", 1);
enregistrerEmprunt(1, "Le Petit Prince", "2024-07-01", "2024-07-15");
// Affichage des informations
printf("Livres dans la bibliothèque:\n");
for (int i = 0; i < nombre_livres; i++) {
printf("%s par %s (%d) - %s\n",
bibliotheque[i].titre,
bibliotheque[i].auteur,
bibliotheque[i].annee,
bibliotheque[i].disponible ? "Disponible" : "Emprunté");
}
printf("\nMembres de la bibliothèque:\n");
for (int i = 0; i < nombre_membres; i++) {
printf("ID: %d, Nom: %s\n", membres[i].id, membres[i].nom);
}
printf("\nEmprunts enregistrés:\n");
for (int i = 0; i < nombre_emprunts; i++) {
printf("Membre ID: %d, Livre: %s, Emprunté le: %s, Retour prévu le: %s\n",
emprunts[i].id_membre,
emprunts[i].titre_livre,
emprunts[i].date_emprunt,
emprunts[i].date_retour);
}
return 0;
}2. Simulation et modélisation
Cas d’application : Simulation d’un système de gestion des stocks
Une entreprise peut utiliser des structures pour modéliser les articles en stock, les commandes et les clients.
#include <stdio.h>
#include <string.h>
#define MAX_ARTICLES 100
#define MAX_COMMANDES 50
// Structure pour représenter un article en stock
struct Article {
char nom[50];
int quantite;
float prix;
};
// Structure pour représenter une commande
struct Commande {
int id_client;
char nom_article[50];
int quantite_commande;
char date_commande[11]; // Format YYYY-MM-DD
};
struct Article stock[MAX_ARTICLES];
struct Commande commandes[MAX_COMMANDES];
int nombre_articles = 0;
int nombre_commandes = 0;
void ajouterArticle(char* nom, int quantite, float prix) {
strcpy(stock[nombre_articles].nom, nom);
stock[nombre_articles].quantite = quantite;
stock[nombre_articles].prix = prix;
nombre_articles++;
}
void enregistrerCommande(int id_client, char* nom_article, int quantite_commande, char* date_commande) {
strcpy(commandes[nombre_commandes].nom_article, nom_article);
commandes[nombre_commandes].id_client = id_client;
commandes[nombre_commandes].quantite_commande = quantite_commande;
strcpy(commandes[nombre_commandes].date_commande, date_commande);
nombre_commandes++;
// Mettre à jour le stock
for (int i = 0; i < nombre_articles; i++) {
if (strcmp(stock[i].nom, nom_article) == 0) {
stock[i].quantite -= quantite_commande;
break;
}
}
}
int main() {
ajouterArticle("Ordinateur", 50, 799.99);
ajouterArticle("Clavier", 200, 19.99);
ajouterArticle("Souris", 150, 9.99);
enregistrerCommande(1, "Ordinateur", 1, "2024-07-01");
enregistrerCommande(2, "Clavier", 2, "2024-07-02");
// Affichage des informations
printf("Articles en stock:\n");
for (int i = 0; i < nombre_articles; i++) {
printf("Nom: %s, Quantité: %d, Prix: %.2f\n",
stock[i].nom, stock[i].quantite, stock[i].prix);
}
printf("\nCommandes enregistrées:\n");
for (int i = 0; i < nombre_commandes; i++) {
printf("Client ID: %d, Article: %s, Quantité: %d, Date: %s\n",
commandes[i].id_client,
commandes[i].nom_article,
commandes[i].quantite_commande,
commandes[i].date_commande);
}
return 0;
}3. Traitement d’images
Cas d’application : Manipulation d’images en niveaux de gris
Un programme peut utiliser des structures pour représenter les pixels d’une image et effectuer des opérations telles que l’inversion des couleurs ou le lissage.
#include <stdio.h>
#include <stdlib.h>
// Structure pour représenter un pixel en niveaux de gris
struct Pixel {
unsigned char niveau_gris;
};
// Structure pour représenter une image en niveaux de gris
struct Image {
int largeur;
int hauteur;
struct Pixel* pixels;
};
// Fonction pour créer une image
struct Image creerImage(int largeur, int hauteur) {
struct Image img;
img.largeur = largeur;
img.hauteur = hauteur;
img.pixels = (struct Pixel*)malloc(largeur * hauteur * sizeof(struct Pixel));
return img;
}
// Fonction pour libérer la mémoire de l'image
void libererImage(struct Image img) {
free(img.pixels);
}
// Fonction pour inverser les couleurs de l'image
void inverserCouleurs(struct Image img) {
for (int i = 0; i < img.largeur * img.hauteur; i++) {
img.pixels[i].niveau_gris = 255 - img.pixels[i].niveau_gris;
}
}
// Fonction pour afficher l'image (pour des raisons de simplicité, on affiche les niveaux de gris)
void afficherImage(struct Image img) {
for (int i = 0; i < img.hauteur; i++) {
for (int j = 0; j < img.largeur; j++) {
printf("%3d ", img.pixels[i * img.largeur + j].niveau_gris);
}
printf("\n");
}
}
int main() {
int largeur = 5;
int hauteur = 5;
struct Image img = creerImage(largeur, hauteur);
// Initialisation de l'image avec des valeurs de niveaux de gris
for (int i = 0; i < largeur * hauteur
; i++) {
img.pixels[i].niveau_gris = i * 10;
}
printf("Image originale:\n");
afficherImage(img);
inverserCouleurs(img);
printf("\nImage avec couleurs inversées:\n");
afficherImage(img);
libererImage(img);
return 0;
}4. Gestion des étudiants
Cas d’application : Système de gestion des informations des étudiants
Un programme peut utiliser des structures pour stocker et gérer les informations des étudiants, y compris leurs notes, et calculer des statistiques comme la moyenne des notes.
#include <stdio.h>
#include <string.h>
#define MAX_ETUDIANTS 100
#define MAX_NOTES 10
// Structure pour représenter un étudiant
struct Etudiant {
char nom[50];
int id;
float notes[MAX_NOTES];
int nombre_notes;
};
// Tableau pour stocker les étudiants
struct Etudiant etudiants[MAX_ETUDIANTS];
int nombre_etudiants = 0;
// Fonction pour ajouter un étudiant
void ajouterEtudiant(char* nom, int id, float* notes, int nombre_notes) {
struct Etudiant etu;
strcpy(etu.nom, nom);
etu.id = id;
etu.nombre_notes = nombre_notes;
for (int i = 0; i < nombre_notes; i++) {
etu.notes[i] = notes[i];
}
etudiants[nombre_etudiants++] = etu;
}
// Fonction pour calculer la moyenne des notes d'un étudiant
float calculerMoyenne(float* notes, int nombre_notes) {
float somme = 0.0;
for (int i = 0; i < nombre_notes; i++) {
somme += notes[i];
}
return somme / nombre_notes;
}
// Fonction pour afficher les informations des étudiants
void afficherEtudiants() {
for (int i = 0; i < nombre_etudiants; i++) {
printf("Nom: %s, ID: %d, Moyenne: %.2f\n",
etudiants[i].nom, etudiants[i].id, calculerMoyenne(etudiants[i].notes, etudiants[i].nombre_notes));
}
}
int main() {
float notes1[] = {85.0, 90.0, 78.0};
float notes2[] = {88.0, 92.0, 79.0};
ajouterEtudiant("Alice", 1, notes1, 3);
ajouterEtudiant("Bob", 2, notes2, 3);
afficherEtudiants();
return 0;
}💻 Exercices corrigés sur les structures en langage C
Sélectionnez un niveau et un thème pour afficher des exercices corrigés structure C, des sujets de TD structures langage C, des TP structures C et des exercices de programmation adaptés aux débutants et aux étudiants.
Exercices proposés
12 exercices affichésCas pratiques corrigés sur les structures en langage C
Choisissez une application pour générer un exercice complet : gestion étudiant avec une structure C, gestion de bibliothèque, gestion des employés, gestion de stock, carnet d’adresses, fiche client ou gestion des produits en langage C.
🚀 Exercices avancés corrigés sur les structures en langage C
Cette série couvre les principales manipulations avancées : tableau de structures C, pointeur sur structure C, structures imbriquées, tableaux dans une structure, chaînes de caractères, typedef struct C, allocation dynamique et utilisation de malloc avec une structure C.
Exercices proposés
9 exercices affichés⚠️ Les erreurs les plus fréquentes avec les structures en C
Les principales fautes de syntaxe, d’accès aux membres, de gestion des chaînes, des pointeurs et de la mémoire dynamique.
Oublier le point-virgule après la structure
Erreur : terminer la déclaration sans ;.
struct Etudiant {
char nom[50];
int age;
};Confondre la structure et la variable
Erreur : utiliser directement
Etudiant e1; sans avoir déclaré un typedef.
Correction :
struct Etudiant e1;
Utiliser = pour copier une chaîne
Incorrect :
e1.nom = "Sofia";
Correct :
strcpy(e1.nom, "Sofia");
Confondre . et ->
Utilisez . avec une variable de structure et
-> avec un pointeur sur structure.
e1.age = 20;
pEtudiant->age = 20;Oublier & dans scanf
Incorrect :
scanf("%d", e1.age);
Correct :
scanf("%d", &e1.age);
Mal initialiser une structure
Les valeurs doivent respecter l’ordre des membres, sauf avec l’initialisation désignée.
struct Etudiant e1 = {
.nom = "Sofia",
.age = 20,
.moyenne = 15.5
};Utiliser malloc sans vérifier le résultat
Vérifiez toujours que le pointeur retourné par malloc
n’est pas égal à NULL.
Etudiant *e = malloc(sizeof(Etudiant));
if (e == NULL) {
return 1;
}Oublier de libérer la mémoire
Toute mémoire réservée avec malloc doit être libérée.
free(e);
e = NULL;Comparer deux structures avec ==
Deux structures complètes ne se comparent pas directement avec
==. Comparez leurs membres un par un.
Dépasser la taille d’un tableau de caractères
Limitez la saisie pour éviter un dépassement de mémoire.
scanf("%49s", e1.nom);🎓 Support learning : comprendre les structures en langage C
Sélectionnez une question pour générer une fiche pédagogique avec définition, méthode, syntaxe, exemple corrigé, erreur fréquente et exercice.
20 fiches d’apprentissage disponibles
