Laboratoire 1
L’objectif de ce laboratoire est de vous rafraichir (ou de vous mettre à niveau) par rapport aux prérequis du cours INF1070 et INF3135.
Avoir son Linux
Plusieurs solutions sont possibles :
- Avoir une distribution native. Pour assister aux séances zoom, vous pouvez alors utiliser leur client web ou leur client Linux natif.
- Avoir une machine virtuelle (par exemple virtualbox).
- Utiliser le serveur java de labunix via SSH.
Unix et ligne de commande
- Calculer le nombre de fichiers texte existants dans le répertoire courant, et mettre le résultat dans un fichier « f1 »
- Aide:
man ls
,man wc
,man bash
- Aide:
- Afficher la cinquième ligne du fichier «
/etc/hosts
»- Aide:
man head
,man tail
- Aide:
- Créer un lien symbolique vers
/bin/sh
qui s’appelletoto
dans le répertoire courant- Aide:
man ln
- Aide:
- Quelles sont les permissions qui seront données avec la commande :
chmod 777
chmod 640
chmod 005
- Listez tous les fichiers et répertoires du répertoire
/etc
qui commencent par la lettre «c
».- Même question en incluant les sous-répertoires de
/etc
(et en cachant les messages d’erreur). - Listez tous les mots du fichier
/usr/share/dict/words
qui commencent par la lettre «c
». - Aide:
man glob.7
,man find
,man grep
- Même question en incluant les sous-répertoires de
Programmation C
Exercice 1
Écrire un programme en C qui lit 6 phrases d’une longueur maximale de 400 caractères au clavier et qui les mémorise dans un tableau de pointeurs sur char en réservant dynamiquement l’emplacement en mémoire pour les chaînes. À chaque lecture de 2 phrases, le programme les enregistre dans un fichier texte, et libère l’emplacement mémoire de ces chaînes juste après.
Exercice 2
Écrire un programme en C qui lit les lignes du fichier passé en argument, les stocke dans un tableau, puis trie les lignes lexicographiquement (en n’échangeant que les pointeurs).
Rappel du trie à bulle : soit la variable «taille» la taille du tableau «tab» qu’on souhaite trier:
for (i=0 ; i < taille-1; i++)
{
for (j=0 ; j < taille-i-1; j++)
{
if (tab[j] > tab[j+1])
{
tmp = tab[j];
tab[j] = tab[j+1];
tab[j+1] = tmp;
}
}
}
Indices :
man malloc
man free
man fopen
man fclose
man fprintf
man strcmp
Bonus: Bandit
Afin de finir le rappel/la mise en niveau en shell et en utilisation des systèmes Unix, il est proposé de faire les exercices de bandit