• Aucun résultat trouvé

Travaux Dirig´es de programmation n

N/A
N/A
Protected

Academic year: 2022

Partager "Travaux Dirig´es de programmation n"

Copied!
2
0
0

Texte intégral

(1)

Travaux Dirig´ es de programmation n

o

2

Cours de Programmation C

—L2.1—

x

Exercice 1. Copie de fichiers

1. ´ Ecrire une fonction int Copie(FILE *f1, FILE *f2) qui lit caract` ere par caract` ere le fichier manipul´ e grˆ ace ` a f1 et le copie dans le fichier manipul´ e grˆ ace ` a f2

2. ´ Ecrire une fonction int CopieMots(FILE *f1, FILE *f2, char sep) qui lit mot ` a mot le fichier manipul´ e grˆ ace ` a f1 (on appelle mot ce qui est reconnu par le format %s de fscanf) et ´ ecrit dans le fichier manipul´ e grˆ ace ` a f2 la liste des mots s´ epar´ es par le caract` ere sep.

Exemple, pour un fichier contenant la phrase : Bonjour tout le monde

L’appel de la fonction avec sep=’-’ ´ ecrit dans le second fichier : Bonjour-tout-le-monde

x

Exercice 2. Sortie standard

1. ´ Ecrire une fonction main qui lit dans les arguments de la ligne de commande une r´ ef´ erence de fichier source et une r´ ef´ erence de fichier cible puis utilise la fonction Copie pour copier le ficher source dans le fichier cible. Si le nombre d’arguments envoy´ es est insuffisant ou si une erreur se produit dans l’acc` es aux fichiers, afficher une erreur.

2. Modifier la fonction main pour qu’on puisse n’envoyer qu’un fichier source : dans le cas o` u un seul fichier est envoy´ e, on ´ ecrira sur la sortie standard grˆ ace au pointeur stdout.

x

Exercice 3. Options

On va ` a pr´ esent permettre l’envoi d’options par le biais de la ligne de commande. Les options sont des chaines de caract` eres commen¸ cant par ’-’ suivi d’une lettre.

1. On souhaite que le programme de copie de fichiers ´ ecrit pr´ ecedemment accepte une option ’-m’ qui permet d’utiliser la fonction CopieMots plutˆ ot que la fonction Copie.

L’appel du programme se fera comme suit : MonCat (-m) fichierSource (fichierCible)

Modifier vootre fonction main pour prendre en compte l’option ’-m’.

2. ´ Ecrire la fonction main d’un programme qui accepte trois options : ’-a’, ’-b’, ’-c’

dans un ordre quelconque. La fonction testera l’ensemble des arguments de la ligne de commande et affichera la liste des options s´ electionn´ ees ou une erreur en cas d’option non valide.

1

(2)

3. Ajouter un param` etre int s ` a vos fonctions Copie et CopieMots pour que le nombre maximum de caract` eres (respectivement de mots) copi´ es soit ´ egal ` a s. Si s est n´ egatif, alors on copie l’ensemble des caract` eres (respectivement mots) du fichier source.

4. Ajouter une option ’-s’ au programme de copie de fichiers ´ ecrit pr´ ecedemment. Cette option permet de sp´ ecfier un nombre maximum de caract` eres ` a lire, ou, si elle est utilis´ ee avec l’option ’-m’ un nombre maximum de mots. Le nombre doit ˆ etre ´ ecrit dans l’argument de la ligne de commande qui suit ’-s’. Exemples d’appel :

MonCat -s 20 -m toto toto.l

copie les 20 premiers mots du fichier toto dans le fichier toto.l.

MonCat -s 50 toto

copie les 50 premiers caract` eres du fichier toto et les affiche sur la sortie standard.

x

Exercice 4. Menu

Modifier maintenant la fonction main pour que si aucun argument n’est envoy´ e sur la ligne de commande, un menu soit affich´ e permettant d’utiliser toutes les options du programme sous forme de choix et d’entrer les noms des fichiers source et cible. ` A la fin de la copie, le programme ne sera pas ferm´ e mais affichera ` a nouveau le menu pour permettre une nouvelle copie : un choix du menu permettra de sortir du programme.

2

Références

Documents relatifs

– ´ Ecrire une fonction qui prend en argument une liste chaˆın´ ee et retourne le nombre d’´ el´ ements diff´ erents qu’elle contient.. – Donner la complexi´ e des

Donner un automate d´eterministe complet sur l’alphabet {a, b} qui reconnaˆıt les mots dont la deuxi`eme lettre est un a.. x

Trouvez un automate d´ eterministe et complet A 6 reconnaissant les nombres dont l’´ ecriture binaire est multiple de 6 par les deux m´ ethodes suivantes :2. Directement en

Montrer qu’il existe un chemin r´eussi qui contient un circuit unique- ment ´etiquet´e par des a.. En d´eduire que le langage L n’est reconnaissable par

iii) Dessiner un automate mod´elisant le jeu. Chaque ´etat repr´esente une situation diff´erente. Tout ´etat est initial sauf l’´etat dans lequel tous les jetons ont la

[r]

On tire au sort, grâce à la fonction Random (unifrnd), les coordonnées d’un point dans le carré de coté 1.. Sur un très grand nombre de points, on teste pour savoir si le

[r]