Sorbonne Université Master 2017 2018
PR : Travaux sur Machine 2. Toujours des fichiers

Cette séance poursuit l’étude des fonctions sur fichiers.



1 Fonction grep étendue

On considère le fichier liste-rep.c founi en annexe qui liste le contenu d’un répertoire. Ecrire une variante de ce programme qui cherche la chaîne donnée en premier argument dans tous les fichiers du répertoire donné en 2e argument. Il affiche le nom de chaque fichier qui contient la chaîne de caractères recherchée, ou "Aucun fichier valide" si la chaîne n’est présente dans aucun des fichiers du répertoire.

N.B : Vous pouvez utiliser la fonction strstr de la bibliothèque string.h pour trouver si une chaîne de caractères est présente dans une autre.

Exemple d'appel :
bin/extended-grep if src
Fichier à créer : extended-grep.c

2 Inverseur de contenu en utilisant lseek

Ecrire un programme qui prend en argument deux noms de fichiers, lit le premier caractère par caractère pour l’écrire de manière inversée dans le deuxième. Enfin, il affiche le nombre de caractères copiés. Votre programme doit impérativement utiliser la fonction lseek pour avance dans la lecture.

Si le premier fichier contient

p o r t s a l u t

alors le deuxième devra contenir

t u l a s t r o p

(on ne testera évidemment pas sur un fichier contenant un palindrome comme radar etc).

Exemple d'appel :
echo > t1.txt; echo "portsalut" >> t1.txt ; bin/inverser-fichier t1.txt 1t.txt; cat 1t.txt
Fichier à créer : src/inverser-fichier.c

3 Inverseur de contenu en utilisant pread

Même exercice que précédemment, mais en utilisant pread à la place de lseek.

Exemple d'appel :
echo > t2.txt; echo "portsalut" >> t2.txt ; bin/inverser-fichier t2.txt 2t.txt; cat 2t.txt
Fichier à créer : src/inverser-pread.c

4 Annexes


liste-rep.c

makefile
Format de l'envoi : extended-grep.c
Répertoires autorisés : inverser-fichier.c inverser-pread.c