Piscine 42 C08 : les exercices corrigés
C08 est dédié à la création et à l’utilisation des fichiers d’en-tête en C, un aspect crucial pour organiser ton code. Tu vas apprendre à définir des structures, des types et des macros dans des fichiers séparés, puis à les inclure dans tes projets. Ce module t’aidera à structurer ton code pour des projets plus complexes.
Découvres ci-dessous les solutions détaillées et commentées pour le projet C07 de la Piscine de l’école 42.
C08 ex00 : ft.h
🎯 Objectif de ft.f
L’objectif de cet exercice est de créer un fichier d’en-tête (ft.h
) qui contient les prototypages de plusieurs fonctions de base. Ce fichier servira à déclarer les fonctions que vous pourrez utiliser dans d’autres fichiers ou projets.
🎓 Notions essententielles
- Fichiers d’en-tête en C : Un fichier d’en-tête (header file) est un fichier contenant des définitions de types, des macros, et des déclarations de fonctions. Il est inclus dans d’autres fichiers source à l’aide de la directive
#include
. - Prototypage de fonctions : Un prototype de fonction est une déclaration de la signature d’une fonction (type de retour, nom, paramètres) sans en définir le corps. Il informe le compilateur de l’existence de la fonction et de la manière de l’appeler.
💻 Fonctionnement de ft.h
Le fichier d’en-tête doit être nommé ft.h
et doit être placé dans le dossier ex00/
.
Directives de préprocesseur :
- #ifndef FT_H vérifie si FT_H n’est pas défini. Si c’est le cas, le contenu du fichier est inclus.
- #define FT_H définit FT_H, et empêche les inclusions multiples.
- #endif termine le bloc conditionnel.
Prototypes de fonctions :
Le fichier ft.h
doit contenir les prototypes des fonctions suivantes :
- ft_putchar
- ft_swap
- ft_putstr
- ft_strlen
- ft_strcmp
⏩ Cela permet au compilateur de vérifier que les appels de fonction sont corrects.
✅ Le code de ft.h :
#ifndef FT_H
# define FT_H
void ft_putchar(char c);
void ft_swap(int *a, int *b);
void ft_putstr(char *str);
int ft_strlen(char *str);
int ft_strcmp(char *s1, char *s2);
#endif
C08 ex01 : ft_boolean.h
🎯 Objectif de ft_strcmp
L’objectif de cet exercice est de créer un fichier d’en-tête (ft_boolean.h
) qui définit un type booléen et quelques macros associées. Ce fichier d’en-tête doit permettre de compiler et d’exécuter correctement un programme donné.
🎓 Notions essententielles
- Définition de types en C : Utilisation de
typedef
pour créer de nouveaux types basés sur des types existants. - Macros en C : Utilisation de
#define
pour créer des macros, qui sont des instructions préprocesseur remplacées par leur valeur avant la compilation. - Fichiers d’en-tête en C : Création de fichiers
.h
pour centraliser les déclarations de types, macros, et autres éléments réutilisables.
💻 Fonctionnement de ft_boolean.h
Création du fichier d’en-tête :
- Le fichier d’en-tête doit être nommé
ft_boolean.h
et placé dans le dossierex01/
.
- Le fichier d’en-tête doit être nommé
Définition du type booléen :
- Utiliser
typedef
pour définir un typet_bool
basé surint
. En C, il n’existe pas de typebool
natif, donc un entier est souvent utilisé pour représenter les valeurs booléennes (0 pourfalse
, 1 pourtrue
).
- Utiliser
Description des éléments définis :
- Type
t_bool
: Un type entier pour représenter les valeurs booléennes (TRUE
ouFALSE
). - Macros
TRUE
etFALSE
: DéfinirTRUE
comme1
etFALSE
comme0
. - Macros
EVEN_MSG
etODD_MSG
: Messages qui seront affichés en fonction du nombre d’arguments passés au programme. - Macro
SUCCESS
: DéfinirSUCCESS
comme0
pour indiquer une fin normale du programme. - Macro
EVEN
: Une macro qui vérifie si un nombre est pair.
- Type
✅ Le code de ft_boolean.h :
#ifndef FT_BOOLEAN_H
# define FT_BOOLEAN_H
# include
typedef int t_bool;
# define EVEN(nbr) (nbr % 2 == 0)
# define TRUE 1
# define FALSE 0
# define SUCCESS 0
# define EVEN_MSG "I have an even number of arguments.\n"
# define ODD_MSG "I have an odd number of arguments.\n"
#endif