Date de première publication : 2014/12/8
Ce dernier TP vise à expérimenter les dernières notions vues en cours...
Fonctions à nombre d'arguments variable
À votre avis, que fait le programme suivant :
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
int main()
{
struct dirent * lecture;
DIR *rep;
rep = opendir("." );
while ((lecture = readdir(rep))) {
printf("%s\n", lecture->d_name);
}
closedir(rep);
}
Créer une fonction à nombre d'arguments variable qui affiche le contenu des répertoires passés en paramètre !
fonction1(2, "tp1", "tp2");
fonction2("tp1", "tp2", NULL);
Utiliser la fonction qsort()
qsort()
est une fonction en C mais que permet-elle de faire, quel fichier entête faut-il inclure et comment l'utiliser ?
Toutes ces réponses sont dans man
- Ecire une fonction
compare_int()
qui permet de comparer deux entiers dont l'adresse est connue - Créer un tableau de 20 éléments entier dont les valeurs aléatoires sont comprises en 0 et 1000.
- Afficher le tableau
- Trier le tableau avec
qsort()
- Afficher à nouveau le tableau
Pour le fun, vous pouvez écrire une petite macro ITER
qui pourrait simplifier l'usage de la boucle :
ITER(i, 20, printf("%d", tab[i]));
Annuaire des languages
Fichiers binaires
Vous pouvez également réutiliser le tableau de structures que vous avez créé au TP d'il y a longtemps (TP 4).
- Faire une structure
donnee_t
pour stocker un nom (char[100]
), un langage (char[50]
), une année (int
) - Créer un tableau de structures avec quelques données
donnee_t tab[] = { {"Gosling", Java", 1993},
{"Van Rossum", "Python", 1991},
{"Stroustrup", "C++", 1983},
{"Ritchie", "C",1972}
};
- Sauvegarder ce tableau avec les "options binaires" (pas le truc qui fait perdre de l'argent, mais celui que l'on a vu en cours)
- Lire ce qui a été sauvegardé...
Auteur | Langage | Année |
Backus John | FORTRAN | 1957 |
Goldfarb Charles | GML | 1969 |
Wirth Niklaus | Pascal | 1970 |
Ritchie Dennis | C | 1972 |
Kernighan Brian | C | 1972 |
Sussman Gerald Jay | Scheme | 1975 |
Steele Guy L | Scheme | 1975 |
Naughton Patrick | Java | 1983 |
Cox Brad | Objective C | 1983 |
Berners Lee Tim | WWW | ~1990 |
Van Rossum Guido | Python | 1991 |
Gosling James | Java | 1993 |
Lerdorf Rasmus | PHP | 1994 |
Heich Brendan | Javscript | 1995 |
Odersky Martin | Scala | 2003 |
Lattner Chris | Swift | 2014 |
Tri des donneés
En utilisant qsort()
et les bonnes fonctions de comparaison,
- afficher les langages suivant leur ordre d'apparition
- afficher les langages suivant l'ordre lexicographique
Questions
Que se passe-t-il dans les cas suivants :
- si les types chaines sont de type
char *
? - si la structure est une liste chaînée et non plus un tableau ?