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 entier n, 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 :

  1. Vérifier si n est négatif.
  2. Si c'est le cas, retourner -n pour obtenir la valeur positive correspondante.
  3. Sinon, retourner n tel quel.

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 :

  1. Ignorer les espaces blancs initiaux dans la chaîne.
  2. Déterminer le signe du nombre en vérifiant la présence éventuelle d'un '-' ou '+' au début.
  3. Parcourir chaque caractère de la chaîne, en s'assurant qu'il est valide pour la base spécifiée.
  4. Convertir chaque caractère en sa valeur numérique correspondante et accumuler le résultat en multipliant par la base à chaque étape.
  5. Appliquer le signe au résultat final et le retourner.

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 par str en une valeur de type long 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 :

  1. Ignorer les espaces blancs initiaux dans la chaîne.
  2. Déterminer le signe du nombre en vérifiant la présence éventuelle d'un '-' ou '+' au début.
  3. Parcourir chaque caractère numérique de la chaîne, en convertissant chaque caractère en sa valeur numérique correspondante.
  4. Accumuler le résultat en multipliant le total précédent par 10 et en ajoutant la nouvelle valeur numérique.
  5. Appliquer le signe au résultat final et le retourner.

🛡️ 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ères str 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 :

  1. Ignorer les espaces blancs initiaux.
  2. Vérifier la présence éventuelle d'un signe '+' ou '-'.
  3. Parcourir chaque caractère pour s'assurer qu'il s'agit de chiffres.
  4. Convertir la chaîne en nombre tout en vérifiant les dépassements de capacité (INT_MAX et INT_MIN).
  5. Retourner 1 si la chaîne représente un entier valide, sinon 0.

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ères str 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 :

  1. Ignorer les espaces blancs initiaux.
  2. Vérifier la présence éventuelle d'un signe '+' ou '-'.
  3. Parcourir les caractères pour détecter les chiffres et au plus un point décimal.
  4. S'assurer que la chaîne n'est pas vide et contient des chiffres.
  5. Retourner 1 si la chaîne représente un nombre valide, sinon 0.

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ères str 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 :

  1. Ignorer les espaces blancs initiaux.
  2. Vérifier la présence éventuelle d'un préfixe '0x' ou '0X'.
  3. Parcourir les caractères restants pour s'assurer qu'ils sont des chiffres (0-9) ou des lettres valides (a-f, A-F).
  4. Retourner 1 si la chaîne est un hexadécimal valide, sinon 0.

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 fichier filename se termine par l'extension extension.

  • 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 :

  1. Calculer la longueur de filename et de extension.
  2. Comparer les caractères de filename à partir de la position appropriée avec ceux de extension.
  3. Retourner 1 si filename se termine par extension, sinon 0.

🧩 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ère c dans la chaîne de caractères str.

  • 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 :

  1. Initialiser un compteur à zéro.
  2. Parcourir chaque caractère de la chaîne str.
  3. Incrémenter le compteur chaque fois que le caractère actuel correspond à c.
  4. 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îne str jusqu'à la première occurrence du caractère c.

  • 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 :

  1. Initialiser un compteur à zéro.
  2. Parcourir la chaîne str caractère par caractère.
  3. 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.
  4. 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îne str, en utilisant le caractère delimiter 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 :

  1. Initialiser un compteur de mots à zéro.
  2. Parcourir la chaîne str en ignorant les délimiteurs initiaux.
  3. À chaque fois qu'un caractère non-délimiteur est rencontré après un délimiteur, incrémenter le compteur de mots.
  4. 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îne str contient le caractère c.

  • 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 :

  1. Parcourir la chaîne str caractère par caractère.
  2. Si le caractère c est trouvé, retourner 1.
  3. 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înes array contient la chaîne str.

  • 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 :

  1. Parcourir chaque élément du tableau array.
  2. Comparer chaque élément avec la chaîne str.
  3. Si une correspondance est trouvée, retourner 1.
  4. 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émoire src vers dst, 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 :

  1. Vérifier si dst et src sont valides.
  2. Si dst est après src en mémoire, copier les données de la fin vers le début pour éviter le chevauchement.
  3. Sinon, copier les données du début vers la fin.
  4. 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îne s, 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 :

  1. Calculer la longueur réelle à copier, qui est le minimum entre n et la longueur de s.
  2. Allouer de la mémoire pour la nouvelle chaîne, incluant l'espace pour le caractère nul.
  3. Copier les caractères correspondants de s vers la nouvelle chaîne.
  4. Ajouter un caractère nul à la fin de la nouvelle chaîne.
  5. 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