Génie Logiciel - Java (IGL245)
Thème :
Junior
1 vues ·7/10 leçons

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 :

  1. Sauvegarder les données des produits (nom, prix, quantité) dans un fichier
  2. Charger les données sauvegardées au démarrage du programme
  3. Ajouter de nouveaux produits et les enregistrer
  4. Afficher la liste des produits stockés
  5. 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 :

  1. Crée un fichier produits.txt
  2. Écrit 3 produits avec le format : nom;prix;quantité
  3. 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 :

  1. Tente d’ouvrir un fichier
  2. Vérifie si l’ouverture a réussi
  3. Affiche un message d’erreur approprié si elle échoue
  4. 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 :

  1. Charger les produits depuis stock.txt au démarrage
  2. Afficher la liste des produits actuels
  3. Ajouter un nouveau produit et le sauvegarder
  4. Calculer la valeur totale du stock (prix × quantité)
  5. 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() et fprintf() 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() retourne NULL
  • 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.