Ajouts Personnels - Gregory-Marquiset/gm_libft GitHub Wiki
Fonctions Personnels Ajouter a la Libft
Cette section couvre les fonctions personnels ajouter a la bibliothèque Libft. Chaque fonction est décrite en détail pour fournir une compréhension claire de son utilité, de sa logique, et de son contexte d'utilisation.
🧮 Fonctions Mathématiques
ft_absolute_nbr
-
Prototype :
int ft_absolute_nbr(int n);
-
But de la fonction : La fonction
ft_absolute_nbr
retourne la valeur absolue du nombre entiern
, c'est-à-dire sa valeur positive sans tenir compte de son signe. -
Contexte d'utilisation : Utile lorsque vous devez travailler avec des valeurs positives, indépendamment de leur signe initial, par exemple dans des calculs mathématiques où seules les magnitudes importent.
-
Logique du code :
- Vérifier si
n
est négatif. - Si c'est le cas, retourner
-n
pour obtenir la valeur positive correspondante. - Sinon, retourner
n
tel quel.
- Lien vers la documentation officielle : abs(3) — Linux manual page
ft_atoi_base
-
Prototype :
int ft_atoi_base(const char *str, int base);
-
But de la fonction : La fonction
ft_atoi_base
convertit une chaîne de caractères représentant un nombre dans une base donnée (jusqu'à la base 16) en un entier en base 10. -
Contexte d'utilisation : Utile pour interpréter des chaînes contenant des nombres dans différentes bases, comme des valeurs hexadécimales ou binaires, et les convertir en entiers décimaux pour des calculs ultérieurs.
-
Logique du code :
- Ignorer les espaces blancs initiaux dans la chaîne.
- Déterminer le signe du nombre en vérifiant la présence éventuelle d'un '-' ou '+' au début.
- Parcourir chaque caractère de la chaîne, en s'assurant qu'il est valide pour la base spécifiée.
- Convertir chaque caractère en sa valeur numérique correspondante et accumuler le résultat en multipliant par la base à chaque étape.
- Appliquer le signe au résultat final et le retourner.
- Lien vers la documentation officielle : strtol(3) — Linux manual page
ft_atol
-
Prototype :
long ft_atol(const char *str);
-
But de la fonction : La fonction
ft_atol
convertit la chaîne de caractères pointée parstr
en une valeur de typelong int
. -
Contexte d'utilisation : Utile pour convertir des représentations textuelles de grands nombres entiers en valeurs numériques de type
long
, notamment lorsque la plage des entiers standards (int
) est insuffisante. -
Logique du code :
- Ignorer les espaces blancs initiaux dans la chaîne.
- Déterminer le signe du nombre en vérifiant la présence éventuelle d'un '-' ou '+' au début.
- Parcourir chaque caractère numérique de la chaîne, en convertissant chaque caractère en sa valeur numérique correspondante.
- Accumuler le résultat en multipliant le total précédent par 10 et en ajoutant la nouvelle valeur numérique.
- Appliquer le signe au résultat final et le retourner.
- Lien vers la documentation officielle : atol(3) — Linux manual page
🛡️ Validation et vérifications
ft_isint
-
Prototype :
int ft_isint(const char *str);
-
But de la fonction : La fonction
ft_isint
vérifie si la chaîne de caractèresstr
représente un entier valide dans les limites des entiers signés en C. -
Contexte d'utilisation : Utile pour valider les entrées utilisateur ou les données provenant de fichiers, afin de s'assurer qu'elles peuvent être converties en entiers sans provoquer de dépassement ou d'erreur.
-
Logique du code :
- Ignorer les espaces blancs initiaux.
- Vérifier la présence éventuelle d'un signe '+' ou '-'.
- Parcourir chaque caractère pour s'assurer qu'il s'agit de chiffres.
- Convertir la chaîne en nombre tout en vérifiant les dépassements de capacité (
INT_MAX
etINT_MIN
). - Retourner 1 si la chaîne représente un entier valide, sinon 0.
- Lien vers la documentation officielle : strtol(3) — Linux manual page
ft_isnbr
-
Prototype :
int ft_isnbr(const char *str);
-
But de la fonction : La fonction
ft_isnbr
détermine si la chaîne de caractèresstr
représente un nombre valide, qu'il soit entier ou décimal. -
Contexte d'utilisation : Pratique pour valider des entrées numériques, notamment lorsqu'on accepte à la fois des entiers et des nombres à virgule flottante.
-
Logique du code :
- Ignorer les espaces blancs initiaux.
- Vérifier la présence éventuelle d'un signe '+' ou '-'.
- Parcourir les caractères pour détecter les chiffres et au plus un point décimal.
- S'assurer que la chaîne n'est pas vide et contient des chiffres.
- Retourner 1 si la chaîne représente un nombre valide, sinon 0.
- Lien vers la documentation officielle : isdigit(3) — Linux manual page
ft_isexa
-
Prototype :
int ft_isexa(const char *str);
-
But de la fonction : La fonction
ft_isexa
vérifie si la chaîne de caractèresstr
représente un nombre hexadécimal valide. -
Contexte d'utilisation : Essentielle pour valider des entrées ou des données censées être en format hexadécimal, comme des codes couleur ou des adresses mémoire.
-
Logique du code :
- Ignorer les espaces blancs initiaux.
- Vérifier la présence éventuelle d'un préfixe '0x' ou '0X'.
- Parcourir les caractères restants pour s'assurer qu'ils sont des chiffres (0-9) ou des lettres valides (a-f, A-F).
- Retourner 1 si la chaîne est un hexadécimal valide, sinon 0.
- Lien vers la documentation officielle : isxdigit(3) — Linux manual page
ft_verif_extension
-
Prototype :
int ft_verif_extension(const char *filename, const char *extension);
-
But de la fonction : La fonction
ft_verif_extension
vérifie si le nom de fichierfilename
se termine par l'extensionextension
. -
Contexte d'utilisation : Utile pour s'assurer que les fichiers ont le format attendu, par exemple lors du traitement de fichiers spécifiques comme
.txt
,.c
, ou.jpg
. -
Logique du code :
- Calculer la longueur de
filename
et deextension
. - Comparer les caractères de
filename
à partir de la position appropriée avec ceux deextension
. - Retourner 1 si
filename
se termine parextension
, sinon 0.
- Lien vers la documentation officielle : strcmp(3) — Linux manual page
🧩 Gestion des chaînes et tableaux
ft_count_n
-
Prototype :
int ft_count_n(const char *str, char c);
-
But de la fonction : La fonction
ft_count_n
compte le nombre d'occurrences du caractèrec
dans la chaîne de caractèresstr
. -
Contexte d'utilisation : Utile pour déterminer la fréquence d'un caractère spécifique dans une chaîne, par exemple pour analyser la composition d'une chaîne ou pour des opérations de validation.
-
Logique du code :
- Initialiser un compteur à zéro.
- Parcourir chaque caractère de la chaîne
str
. - Incrémenter le compteur chaque fois que le caractère actuel correspond à
c
. - Retourner la valeur du compteur après avoir parcouru toute la chaîne.
ft_countuntil
-
Prototype :
int ft_countuntil(const char *str, char c);
-
But de la fonction : La fonction
ft_countuntil
compte le nombre de caractères dans la chaînestr
jusqu'à la première occurrence du caractèrec
. -
Contexte d'utilisation : Pratique pour déterminer la longueur d'un segment de chaîne avant un délimiteur spécifique, comme lors de l'analyse de sous-chaînes ou de la séparation de données.
-
Logique du code :
- Initialiser un compteur à zéro.
- Parcourir la chaîne
str
caractère par caractère. - Incrémenter le compteur tant que le caractère actuel n'est pas
c
et que la fin de la chaîne n'est pas atteinte. - Retourner le compteur, indiquant le nombre de caractères avant
c
.
ft_countwords
-
Prototype :
int ft_countwords(const char *str, char delimiter);
-
But de la fonction : La fonction
ft_countwords
compte le nombre de mots dans la chaînestr
, en utilisant le caractèredelimiter
comme séparateur de mots. -
Contexte d'utilisation : Utile pour analyser des chaînes de texte et déterminer le nombre de mots ou de segments séparés par un délimiteur spécifique, comme des espaces ou des virgules.
-
Logique du code :
- Initialiser un compteur de mots à zéro.
- Parcourir la chaîne
str
en ignorant les délimiteurs initiaux. - À chaque fois qu'un caractère non-délimiteur est rencontré après un délimiteur, incrémenter le compteur de mots.
- Continuer jusqu'à la fin de la chaîne et retourner le nombre total de mots.
ft_contain_n
-
Prototype :
int ft_contain_n(const char *str, char c);
-
But de la fonction : La fonction
ft_contain_n
vérifie si la chaînestr
contient le caractèrec
. -
Contexte d'utilisation : Permet de déterminer la présence d'un caractère spécifique dans une chaîne, utile pour des validations ou des recherches simples.
-
Logique du code :
- Parcourir la chaîne
str
caractère par caractère. - Si le caractère
c
est trouvé, retourner 1. - Si la fin de la chaîne est atteinte sans trouver
c
, retourner 0.
ft_contain_double
-
Prototype :
int ft_contain_double(const char **array, const char *str);
-
But de la fonction : La fonction
ft_contain_double
vérifie si le tableau de chaînesarray
contient la chaînestr
. -
Contexte d'utilisation : Utile pour détecter des doublons dans un tableau de chaînes, par exemple lors de l'analyse de listes ou de la validation d'entrées uniques.
-
Logique du code :
- Parcourir chaque élément du tableau
array
. - Comparer chaque élément avec la chaîne
str
. - Si une correspondance est trouvée, retourner 1.
- Si la fin du tableau est atteinte sans correspondance, retourner 0.
🛠️ Manipulation de la mémoire
ft_memlcpy
-
Prototype :
void *ft_memlcpy(void *dst, const void *src, size_t len);
-
But de la fonction : La fonction
ft_memlcpy
copie jusqu'àlen
octets de la zone mémoiresrc
versdst
, en s'assurant que la copie est effectuée de manière sécurisée, même si les zones se chevauchent. -
Contexte d'utilisation : Utile pour copier des blocs de mémoire lorsque les zones source et destination peuvent se chevaucher, garantissant ainsi une copie correcte sans corruption de données.
-
Logique du code :
- Vérifier si
dst
etsrc
sont valides. - Si
dst
est aprèssrc
en mémoire, copier les données de la fin vers le début pour éviter le chevauchement. - Sinon, copier les données du début vers la fin.
- Retourner le pointeur
dst
.
ft_strndup
-
Prototype :
char *ft_strndup(const char *s, size_t n);
-
But de la fonction : La fonction
ft_strndup
alloue une nouvelle chaîne de caractères et y copie jusqu'àn
caractères de la chaînes
, en ajoutant un caractère nul terminal. -
Contexte d'utilisation : Utile pour créer une copie partielle d'une chaîne existante, par exemple pour extraire une sous-chaîne ou limiter la longueur d'une chaîne copiée.
-
Logique du code :
- Calculer la longueur réelle à copier, qui est le minimum entre
n
et la longueur des
. - Allouer de la mémoire pour la nouvelle chaîne, incluant l'espace pour le caractère nul.
- Copier les caractères correspondants de
s
vers la nouvelle chaîne. - Ajouter un caractère nul à la fin de la nouvelle chaîne.
- Retourner le pointeur vers la nouvelle chaîne.
🚨 Gestion des erreurs et sorties
ft_exit
-
Prototype :
void ft_exit(int out, char *message);
-
But de la fonction : La fonction
ft_exit
termine le programme en cours avec un message d'erreur spécifié par 'message' dans la sortie spécifié par 'out'. -
Contexte d'utilisation : Utile pour quitter proprement un programme en renvoyant un message spécifique dans une sortie choisie