:: Enseignements :: Licence :: L3 :: 2012-2013 :: Programmation C ::
[LOGO]

Quelques commandes


L'objectif de ce TD est d'écrire en C une version simplifiée des commandes wc, cut et tr.

Contrainte pour la représentation des chaînes de caractères

Pour l'intégralité de ce TD, vos programmes devrons utiliser la structure suivante pour représenter les chaînes de caractères :

Exercice 1 - Conversion de char* vers String

Écrire une fonction permettant de convertir une chaîne de caractères classique (de type char*) en une structure String.
Attention : la chaîne d'origine devra être copiée dans un nouvel espace mémoire.

Exercice 2 - Développement des commandes wc, cut et tr

Écrire trois programmes appelés wc, cut et tr, et effectuant une version simplifiée des commandes de base correspondantes. Chacune de ces commandes, utilisée via la ligne de commandes, recevra comme argument la chaîne de caractères à traiter, ainsi que les autres arguments le cas échéant.
Remarque : dans cet exercice, nous ne demandons pas de gestion de fichier, ni de gestion avancée des options.

  1. Programme wc

    Utilisation : wc 'CHAINE'
    Description : Renvoie le nombre de lettres (caractères alphabétiques uniquement) et de mots dans CHAINE.
    Exemple :
    $ wc 'Chaîne de caractères, à traiter !'
    Lettres = 26
    Mots = 5
    

  2. Programme cut

    Utilisation : cut N 'SEPARATOR' 'CHAINE'
    Description : Renvoie le N-ième champ de CHAINE, découpée selon le caractère SEPARATOR.
    Exemple :
    $ cut 3 '_' 'Ma_jolie_chaine,_picétoo_!'
    chaine,
    

  3. Programme tr

    Utilisation : tr 'CHARS' 'CHAINE'
    Description : Renvoie CHAINE, où tous les caractères de CHARS ont été retirés.
    Exemple :
    $ tr 'aep,' 'Ma jolie chaine, picétoo !'
    M joli chin icétoo !
    

Exercice 3 - Compilation des programmes

Écrire un (unique) fichier Makefile permettant de compiler les trois programmes créés ci-dessus. L'ensemble du projet doit respecter l'arborescence standard des projets en langage C, c'est-à-dire utilisant les dossiers src/ (pour les fichiers source .c), include/ (pour les fichiers d'entête .h), bin/ (pour les exécutables compilés), etc.