EXERCICE : LES FICHIERS EN C
🎯 SITUATION PROBLÈME
Une entreprise de gestion de stocks souhaite créer un système pour gérer ses produits. Actuellement, les données sont perdues à chaque arrêt du programme. L’entreprise a besoin d’une solution pour :
- Sauvegarder les données des produits (nom, prix, quantité) dans un fichier
- Charger les données sauvegardées au démarrage du programme
- Ajouter de nouveaux produits et les enregistrer
- Afficher la liste des produits stockés
- Gérer les erreurs (fichier manquant, permissions, etc.)
Objectif : Créer un programme C qui utilise les fichiers pour persister les données entre les exécutions.
❓ QUESTIONS D’EXERCICE (6 Questions)
Question 1 : Concepts Fondamentaux des Fichiers
Énoncé :
Expliquez la différence principale entre un fichier texte et un fichier binaire en C.
Pour chacun, donnez :
- Une définition claire
- Un exemple de données stockées
- Une fonction C appropriée pour la lecture/écriture
- Un avantage et un inconvénient
Contexte : L’entreprise hésite entre sauvegarder ses données de produits en format texte ou binaire.
Question 2 : Ouverture et Gestion des Fichiers
Énoncé :
Analysez le code suivant et identifiez les problèmes potentiels :
FILE *fp = fopen("produits.txt", "r");
char ligne[256];
fgets(ligne, sizeof(ligne), fp);
printf("%s", ligne);
fclose(fp);
Pour chaque problème identifié, proposez une correction et expliquez pourquoi c’est important.
Contexte : Un développeur junior a écrit ce code pour charger les produits, mais le programme plante souvent.
Question 3 : Lecture et Écriture dans les Fichiers
Énoncé :
Vous devez écrire un programme qui :
- Crée un fichier
produits.txt - Écrit 3 produits avec le format :
nom;prix;quantité - Relit le fichier et affiche les produits
Écrivez le code C complet avec :
- Ouverture appropriée du fichier
- Gestion des erreurs
- Fermeture du fichier
- Affichage du résultat
Contexte : C’est la première fois que l’entreprise sauvegarde ses données.
Question 4 : Modes d’Ouverture et Ajout de Données
Énoncé :
Expliquez les différences entre les modes d’ouverture suivants et leurs conséquences :
"r"(lecture)"w"(écriture)"a"(ajout)"r+"(lecture/écriture)
Pour chaque mode, donnez :
- Ce qui se passe si le fichier n’existe pas
- Ce qui se passe si le fichier existe déjà
- Un cas d’usage approprié
Contexte : L’entreprise veut ajouter de nouveaux produits sans perdre les anciens.
Question 5 : Gestion des Erreurs et Pointeurs
Énoncé :
Expliquez pourquoi le pointeur FILE *fp est utilisé en C et pourquoi il est crucial de vérifier si fopen() retourne NULL.
Écrivez un code qui :
- Tente d’ouvrir un fichier
- Vérifie si l’ouverture a réussi
- Affiche un message d’erreur approprié si elle échoue
- Utilise
perror()pour afficher l’erreur système
Contexte : Le programme doit être robuste et gérer les cas d’erreur (fichier manquant, permissions insuffisantes, etc.).
Question 6 : Cas Pratique Complet - Gestion de Stock
Énoncé :
Créez un programme C complet qui :
Fonctionnalités :
- Charger les produits depuis
stock.txtau démarrage - Afficher la liste des produits actuels
- Ajouter un nouveau produit et le sauvegarder
- Calculer la valeur totale du stock (prix × quantité)
- Sauvegarder les modifications dans le fichier
Format du fichier :
Laptop;1200;5
Souris;25;50
Clavier;75;30
Exigences du code :
- Utiliser des structures pour représenter les produits
- Gérer les erreurs d’ouverture/fermeture
- Utiliser
fgets()etfprintf()appropriément - Fermer correctement le fichier après chaque opération
- Afficher des messages informatifs
Contexte : L’entreprise a besoin d’un système complet et fonctionnel pour gérer son stock.
📋 GRILLE D’ÉVALUATION
| Question | Points | Critères |
|---|---|---|
| 1 | 10 | Définitions claires, exemples pertinents, avantages/inconvénients |
| 2 | 15 | Identification des problèmes, corrections, explications |
| 3 | 15 | Code complet, gestion des erreurs, résultat correct |
| 4 | 10 | Explications des modes, cas d’usage appropriés |
| 5 | 15 | Explication pointeurs, gestion erreurs, code robuste |
| 6 | 35 | Fonctionnalités complètes, code structuré, gestion erreurs |
| TOTAL | 100 |
💡 CONSEILS POUR RÉPONDRE
✅ À FAIRE :
- Inclure les bibliothèques nécessaires (
<stdio.h>,<stdlib.h>) - Toujours vérifier si
fopen()retourneNULL - Fermer les fichiers avec
fclose() - Utiliser les modes d’ouverture appropriés
- Gérer les erreurs avec
perror() - Utiliser des structures pour organiser les données
- Tester le code avec des fichiers réels
❌ À ÉVITER :
- Oublier de vérifier les erreurs d’ouverture
- Ne pas fermer les fichiers
- Utiliser le mauvais mode d’ouverture
- Ignorer les messages d’erreur
- Écrire du code sans commentaires
- Utiliser des chemins de fichiers en dur
🔍 POINTS CLÉS À RETENIR
| Concept | Explication |
|---|---|
| FILE *fp | Pointeur vers une structure FILE gérée par le système |
| fopen() | Ouvre un fichier et retourne un pointeur (ou NULL en cas d’erreur) |
| fgets() | Lit une ligne de texte depuis un fichier |
| fprintf() | Écrit du texte formaté dans un fichier |
| fclose() | Ferme le fichier et libère les ressources |
| Mode “r” | Lecture seule (fichier doit exister) |
| Mode “w” | Écriture (crée ou écrase le fichier) |
| Mode “a” | Ajout (ajoute à la fin du fichier) |
| NULL | Valeur retournée par fopen() en cas d’erreur |
| perror() | Affiche le message d’erreur système |
Prêt à passer à la suite ?
Vous avez terminé cette leçon sur EXERCICE : LES FICHIERS EN C. Continuez votre apprentissage avec la prochaine leçon ou explorez d'autres formations.