Manipulations de fichiers

Exercice 1 : Copie de fichier

  1. Réalisez la fonction de copie cp. Pour cette fonction deux signatures sont possibles :
  • int cp(char *cible, char *source)
  • int cp(FILE *cible, FILE *source)

D’après vous quel est l’avantage de chacune de ces signatures. Les implémenter. Rajoutez un main acceptant deux noms de fichiers en paramètres pour tester votre programme.

On prendra grand soin de tester les nombreuses erreurs possible.

  1. On se propose maintenant de réaliser une commande cat (concaténation de plusieurs fichiers en un), pouvez vous réutiliser ce que vous avez déjà programmé ?

Exercice 2: Fichiers et carnet d’adresse.

On souhaite sauvegarder notre carnet d’adresse (cf. feuille précédente), et le recharger au démarrage.

  • De quelles alternatives disposez vous pour réaliser ces fonctions ?
  • Quels sont les avantages et inconvénients de ces alternatives ?
  • Implémenter les fonctions sauverContacts et chargerContact en réutilisant au maximum le code déjà existant.
  • Enfin rajouter les deux fonctions sauverCarnet et chargerCarnet.

Supposons que votre programme veuille charger et sauvegarder automatiquement lors du démarrage ou de sa fermeture, ou placeriez vous le fichier de sauvegarde ? (Cet endroit dépend il du système d’exploitation sous-jacent ?) Rajoutez cette fonctionnalité (auto save/load) à votre programme. Que faudrait il faire pour “court-circuiter” cette fonctionnalité (ne pas forcement le faire, mais y penser).