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 dossier ex01/.

Définition du type booléen :

    • Utiliser typedef pour définir un type t_bool basé sur int. En C, il n’existe pas de type bool natif, donc un entier est souvent utilisé pour représenter les valeurs booléennes (0 pour false, 1 pour true).

Description des éléments définis :

    • Type t_bool : Un type entier pour représenter les valeurs booléennes (TRUE ou FALSE).
    • Macros TRUE et FALSE : Définir TRUE comme 1 et FALSE comme 0.
    • Macros EVEN_MSG et ODD_MSG : Messages qui seront affichés en fonction du nombre d’arguments passés au programme.
    • Macro SUCCESS : Définir SUCCESS comme 0 pour indiquer une fin normale du programme.
    • Macro EVEN : Une macro qui vérifie si un nombre est pair.

✅ Le code de ft_boolean.h :

				
					#ifndef FT_BOOLEAN_H
# define FT_BOOLEAN_H

# include <unistd.h>

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
				
			

📋 Les exercices de C08 :

Les projets C de la piscine 42 :

Retour en haut