TP 8 de Système 1ere Année Informatique 2005-2006 : les fichiers
Exercice 1
On considère le type de donnée "Personne". Sachant qu'on se donne
les contraintes suivantes:
- une personne a un identifiant, qui est un numéro unique
(mais quelconque) ;
- une personne a un nom et un prénom, qui sont des chaînes de caractères qu'on peut considérer limitées à 30 caractères
- une personne a un numéro de téléphone, pour lequels on
utilisera un tableau de 10 chars (un int est trop petit, et un
tableau de char est de toutes façons plus sûr).
On veut considérer un fichier en accès direct comme une suite de personnes. La première personne a l'indice 0, la seconde l'indice 1, etc...
La taille des données pour une personne peut se calculer facilement grâce à sizeof.
Question 1
Écrire des fonctions permettant de lire et/ou d'écrire la personne d'indice i
:
int ecrirePersonne(FILE *f, struct Personne p, int i);
int lirePersonne(FILE *f, struct Personne *pt, int i);
long tailleFichierPersonne(FILE *f);
Les fonctions retournent 1 si elles ont réussi, et 0 sinon. Avant
d'écrire quoi que ce soit, expliquez la signature de
lirePersonne
.
Question 1
Exercice 2
Question 1
En utilisant les fonctions opendir, readdir,
et closedir
, écrire un programme qui affiche le contenu d'un répertoire.
Question 2
tapez "man 2 stat" pour avoir la documentation de la commande
stat. Utilisez cette fonction pour obtenir les informations
suivantes à propos des fichiers listés dans la question 1 :
- Quelle est leur taille ?
- Quels sont les droits sur ces fichiers (lecture, écriture, exécution). Attention, il est plus que recommandé d'utiliser les macros proposées dans la documentation de stat pour cela.
- Le fichier est-t-il en fait un répertoire ?
Question 3
Modifiez votre programme pour qu'il fonctionne comme
ls -lR