Bibliothèques et fichiers d'en-tête
Souvenez-vous, les prototypes ! Ils permettent de donner le plan de votre programme... Cependant très souvent, on écrira beaucoup de lignes de codes, et la visibilité de ce plan devient difficile à lire. Imaginez que vous en êtes à plus de 15 000 lignes écrites, il faudrait remonter en haut de la page afin de voir vos prototypes, voir d'en rajouter, ça serait lourd, très lourd.
Pour résoudre cet inconvénient, on a trouvé un moyen propre, les fichiers d'en-tête !
Qu'est-ce qu'un fichier d'en-tête ?
Un fichier d'en-tête est un fichier texte, avec l'extension .h
Exemple: fonctions.h
Il permettra d'y placer tous les prototypes de notre programme C.
Exemple:
Un fichier avec l'extension .c contenant mon programme program.c
d'habitude on faisait ceci
bib1.jpg
Maintenant on aura cela
bib2.jpg
Avec program.h contenant ce code
Code:
#ifndef PROGRAM_H_INCLUDED #define PROGRAM_H_INCLUDED void swap(int *a, int *b); /* prototype de fonction */ #endif
Dans program.c on a inclut la bibliothèque program.h, mais attention on met des guillemets " " et non des chevrons <>
Dans program.h, on a ajouté notre prototype de la fonction swap
Dans program.h, des choses bizarres sont écrites, mais on s'en préoccupe pas, code::blocks va le générer pour nous (on en parlera plus tard)
Comment créer un fichier d'en-tête avec Code::Blocks ?
Suivez les démarches ci-dessous, ça va tout seul
Menu File -> New -> File...
Choisissez C/C++ Header, puis cliquez sur Go
bib3.jpg
Cliquez sur Next, puis le bouton ...
image_4.png
Choisissez votre répertoire, et insérer votre nom de bibliothèque program.h, puis terminer par Finish
Vous devriez voir cela
bib5.png
Il vous suffira par la suite d'insérer vos prototypes entre ces 2 lignes
- #define PROGRAM_H_INCLUDED
- #endif // PROGRAM_H_INCLUDED
Code:
#ifndef PROGRAM_H_INCLUDED #define PROGRAM_H_INCLUDED void swap(int *a, int *b); #endif // PROGRAM_H_INCLUDED
Bibliothèques Standards
Heureusement pour nous, tout n'est pas toujours à refaire
Copier une chaîne de caractères
Connaître la taille d'une chaîne de caractères
Rechercher un caractère dans une chaîne de caractères
...
Bref tout ce genre de boulot vous pouvez le faire à la mimine, mais on vous évite ce mal à l'aide des bibliothèques standards... Il en existe plusieurs, mais les plus importantes restent celles ci-dessous.
Pour inclure une bibliothèque standard, n'oubliez pas que c'est entre chevrons <bibliothèque>
stdio.h -> fonctions d'affichage, lecture/écriture de fichiers, input utilisateur, etc...
stdlib.h -> fonctions pour quitter un programme, allocations dynamiques (on verra cette joyeuseté très bientôt), nombres aléatoires, etc...
string.h -> manipulations des chaînes de caractères
Pour les autres, vous aurez bien le temps de les découvrir, vous pouvez le faire dès à présent...
EXERCICES
Exercice n°1:
Déterminer la longueur de la chaîne "Hello World !" en utilisant la fonction strlen, compléter le code ci-dessous.
Code:
/* Ajouter juste les bibliothèques que vous avez besoin, ni plus ni moins */ /* prototype de fonction len dans un fichier d'en-tête */ int main(void) { const char hello[] = "Hello World !"; int length = len(hello); printf("longueur : %d lettres", length); /* longueur : 13 lettres */ return 0; } size_t len(const char *chaine) { /* Utilisation de strlen, retourne un type size_t */ }
Il faudra présenter le contenu de:
- functions.c
- functions.h
Dans functions.h, vous supprimerez la ligne // FUNCTIONS_H_INCLUDED, afin que le test se passe sans accroc (on en reparlera, histoire de commentaires compatibles)
Merci de m'avoir lu et à bientôt pour le prochain cours
Commentaire