Premier projet de 42 ayant pour but de recoder un certain nombre de fonctions de la librairie C standard, ainsi que d'autres fonctions utilitaires.
- ft_memset
- ft_bzero
- ft_memcpy
- ft_memccpy
- ft_memmove
- ft_memchr
- ft_memcmp
- ft_strlen
- ft_strdup
- ft_strcpy
- ft_strncpy
- ft_strcat
- ft_strncat
- ft_strlcat
- ft_strchr
- ft_strrchr
- ft_strstr
- ft_strnstr
- ft_strcmp
- ft_strncmp
- ft_atoi
- ft_isalpha
- ft_isdigit
- ft_isalnum
- ft_isascii
- ft_isprint
- ft_toupper
- ft_tolower
Alloue (avec malloc(3)) et retourne une zone de mémoire “fraiche”. La mémoire allouée est initialisée à 0. Si l’allocation échoue, la fonction renvoie NULL.
Prend en paramètre l’adresse d’un pointeur dont la zone pointée doit être libérée avec free(3), puis le pointeur est mis à NULL.
Alloue (avec malloc(3)) et retourne une chaîne de caractère “fraiche” terminée par un ’\0’. Chaque caractère de la chaîne est initialisé à ’\0’. Si l’allocation echoue, la fonction renvoie NULL.
Prend en paramètre l’adresse d’une chaîne de caractères qui doit être libérée avec free(3) et son pointeur mis à NULL.
Assigne la valeur ’\0’ à tous les caractères de la chaîne passée en paramètre.
Applique la fonction f à chaque caractère de la chaîne de caractères passée en paramètre. Chaque caractère est passé par adresse à la fonction f afin de pouvoir être modifié si nécessaire.
Applique la fonction f à chaque caractère de la chaîne de caractères passée en paramètre en précisant son index en premier argument. Chaque caractère est passé par adresse à la fonction f afin de pouvoir être modifié si nécessaire.
Applique la fonction f à chaque caractère de la chaîne de caractères passée en paramètre pour créer une nouvelle chaîne “fraiche” (avec malloc(3)) résultant des applications successives de f.
Applique la fonction f à chaque caractère de la chaîne de caractères passée en paramètre en précisant son index pour créer une nouvelle chaîne “fraiche” (avec malloc(3)) résultant des applications successives de f.
Compare lexicographiquement s1 et s2. Si les deux chaînes sont égales, la fonction retourne 1, ou 0 sinon.
Compare lexicographiquement s1 et s2 jusqu’à n caractères maximum ou bien qu’un ’\0’ ait été rencontré. Si les deux chaînes sont égales, la fonction retourne 1, ou 0 sinon.
Alloue (avec malloc(3)) et retourne la copie “fraiche” d’un tronçon de la chaîne de caractères passée en paramètre. Le tronçon commence à l’index start et a pour longueur len. Si start et len ne désignent pas un tronçon de chaîne valide, le comportement est indéterminé. Si l’allocation échoue, la fonction renvoie NULL.
Alloue (avec malloc(3)) et retourne une chaîne de caractères “fraiche” terminée par un ’\0’ résultant de la concaténation de s1 et s2. Si l’allocation echoue, la fonction renvoie NULL.
Alloue (avec malloc(3)) et retourne une copie de la chaîne passée en paramètre sans les espaces blancs au debut et à la fin de cette chaîne. On considère comme espaces blancs les caractères ’ ’, ’\n’ et ’\t’. Si s ne contient pas d’espaces blancs au début ou à la fin, la fonction renvoie une copie de s. Si l’allocation echoue, la fonction renvoie NULL.
Alloue (avec malloc(3)) et retourne un tableau de chaînes de caractères “fraiches” (toutes terminées par un ’\0’, le tableau également donc) résultant de la découpe de s selon le caractère c. Si l’allocation echoue, la fonction retourne NULL.
Alloue (avec malloc(3)) et retourne une chaîne de caractères “fraiche” terminée par un ’\0’ représentant l’entier n passé en paramètre. Les nombres négatifs doivent être gérés. Si l’allocation échoue, la fonction renvoie NULL.
Affiche le caractère c sur la sortie standard.
Affiche la chaîne s sur la sortie standard.
Affiche la chaîne s sur la sortie standard suivi d’un ’\n’.
Affiche l’entier n sur la sortie standard.
Ecrit le caractère c sur le descripteur de fichier fd.
Ecrit la chaîne s sur le descripteur de fichier fd.
Ecrit la chaîne s sur le descripteur de fichier fd suivi d’un ’\n’.
Ecrit l’entier n sur le descripteur de fichier fd.
Alloue (avec malloc(3)) et retourne un maillon “frais”. Les champs content et content_size du nouveau maillon sont initialisés par copie des paramètres de la fonction. Si le paramètre content est nul, le champs content est initialisé à NULL et le champs content_size est initialisé à 0 quelque soit la valeur du paramètre content_size. Le champ next est initialisé à NULL. Si l’allocation échoue, la fonction renvoie NULL.
Prend en paramètre l’adresse d’un pointeur sur un maillon et libère la mémoire du contenu de ce maillon avec la fonction del passée en paramètre puis libère la mémoire du maillon en lui même avec free(3). La mémoire du champ next ne doit en aucun cas être libérée. Pour terminer, le pointeur sur le maillon maintenant libéré doit être mis à NULL (de manière similaire à la fonction ft_memdel de la partie obligatoire).
Prend en paramètre l’adresse d’un pointeur sur un maillon et libère la mémoire de ce maillon et celle de tous ses successeurs l’un après l’autre avec del et free(3). Pour terminer, le pointeur sur le premier maillon maintenant libéré doit être mis à NULL (de manière similaire à la fonction ft_memdel de la partie obligatoire).
Ajoute l’élément new en tête de la liste.
Parcourt la liste lst en appliquant à chaque maillon la fonction f.
Parcourt la liste lst en appliquant à chaque maillon la fonction f et crée une nouvelle liste “fraiche” avec malloc(3) résultant des applications successives. Si une allocation échoue, la fonction renvoie NULL.
Retourne une ligne lue depuis un file descriptor (gestion de plusieurs file descriptors simultanément).
Reproduction de la fonction printf
- Conversion gérés: CcSspDdiUuOoXxFfp%*.
- Ajout de la conversion B/b pour base binaire.
- Flags gérés: h,hh,l,ll,L,z,j,#,0,-,+
- Precision et taille minimum de champs.
- Fonctions ft_dprintf et ft_asprintf.
Un vecteur est ici un conteneur qui peut contenir une string. Toutes les allocations, redimensionnements et optimisations de la taille du conteneur sont gérés en interne par les fonctions elle-mêmes. Ils sont definis par la structure suivante:
typedef struct s_vector
{
char *str;
size_t len;
size_t size;
size_t scale;
} t_vector;
Ajoute un caractère à la fin du vecteur.
Remplace un caractère à l'indice donné.
Ajoute une string sur n octets à la fin du vecteur.
Ajoute une string à la fin du vecteur.
Ajoute une string à l'indice donné en remplaçant les caractères présents si ceux-ci existent.
Applique une fonction de test (ex: is_upper) ou de modification (to_upper) à un vecteur.
Concatène deux vecteurs.
Duplique un vecteur jusqu'à un caractère donné.
Renvoie le caractère de l'indice donné.
Renvoie l'indice de la première occurence du caractère recherché et -1 si celui-ci n'a pas été trouvé.
Met tout les octets de str à '\0' et reinitialise len à 0.
Renvoie la taille de la chaine contenue dans un vecteur jusqu'au caractère c.
Renvoie le nombre d'occurence d'un caractère dans un vecteur.
Renvoie le nombre d'occurence d'une caine de charactère dans un vecteur.
Copie le contenu d'un vecteur dans un autre.
Lis jusqu'à 'c' sur un fd et renvoie celle-ci via la chaine contenu dans le vecteur passé en paramètre.
Supprime le dernier caractère d'un vecteur.
Supprime les n derniers caractères d'un vecteur.
Supprime un vecteur.
Supprime un charactere.
Duplique un vecteur.
Renvoie une copie de la chaine de caractères contenue dans un vecteur.
Renvoie 1 si le vecteur se termine par la chaine str, sinon 0.
Renvoie 1 si les chaines de caractères contenues dans les deux vecteurs sont identiques, sinon 0.
Réalloue str à une taille donnée et recopie le contenu initialement présent dans la nouvelle chaine.
Ajoute n fois le caractère c à la fin du vecteur.
Ajoute n fois le caractère c au début du vecteur.
Verifie que le vecteur est rempli uniquement de charactere du charset.
Renvoie le nième caractère d'un vecteur.
Renvoie le premier caractère d'un vecteur.
Renvoie le dernier caractère d'un vecteur.
Renvoie un pointeur sur la chaine de caractères contenue dans un vecteur.
Joins les chaines contenues dans deux vecteurs dans un nouveau vecteur.
Joins les chaines contenues dans deux vecteurs dans un nouveau vecteur et libère l'un, l'autre ou les deux.
Renvoie la taille de la chaine contenue dans un vecteur.
Duplique un vecteur sur au maximum n octets.
Renvoie 1 si les chaines de caractères contenues dans les deux vecteurs sont identiques sur n octets, sinon 0.
Initialise un nouveau vecteur de la taille passée en paramètre. Si la taille est de 0, la taille sera réinitialisée à la valeur définie par VCT_DEFAULT_SIZE.
Initialise un nouveau vecteur avec la chaine passée en paramètre.
Renvoie la taille de la chaine contenue dans un vecteur sur un maximum n octets.
Optimise la mémoire d'un vecteur en le réallouant si le conteneur est plus de 3 fois plus grand que la chaine contenue par celui-ci.
Supprime le premier charactère d'un vecteur.
Supprime les n premiers charactères d'un vecteur.
Affiche un vecteur sur 'len' octets.
Affiche un vecteur sur 'len' octets sur un fd donné.
Affiche un vecteur sur 'len' octets et ajoute un '\n'.
Affiche un vecteur sur 'len' octets et ajoute un '\n' sur un fd donné.
Ajoute un caractère au début du vecteur.
Ajoute une chaine de caractère au début du vecteur.
Lis une ligne sur un fd et renvoie velle-ci via la chaine contenu dans le vecteur passé en paramètre.
Remplace toutes les occurences du caractère 'to_replace' d'un vecteur par le caractère 'by'.
Remplace toutes les occurences de la chaine de caractère 'to_replace' d'un vecteur par la chaine de caractère 'by'.
Réinitialise un vecteur à ses valeurs aux valeurs par défaut définies dans ft_vector.h.
Divise la chaine de caractère contenue dans le vecteur via les caractères présents dans str et renvoie à chaque appel de strsplit la prochaine partie divisée dans un nouveau vecteur tant que celle-ci est rappelé avec le même vecteur ou NULL. Si le vecteur initial change, la division se fera sur ce nouveau vecteur. Le flag EACH_SEP permet d'obtenir chaque séparateur dans un vecteur distinct et ALL_SEP, tout les séparateurs qui se suivent dans le même vecteur.
Divise le vecteur initial sur la première occurence du caractère c (celui-ci non inclus). La première partie est renvoyé dans un nouveau vecteur tandis que la seconde est copiée dans le vecteur initial en écrasant les données initialement présentes.
Renvoie 1 si le vecteur commence par la chaine str, sinon 0.
Renvoie l'indice de la première occurence de la chaine de caractère recherchée et -1 si celle-ci n'a pas été trouvée.
Applique une fonction de test (ex: str_is_uppercase) à un vecteur.
Renvoie un nouveau vecteur étant la suvdivision d'un autre.
Supprime chaque occurence des caractères présents dans str.
Supprime toutes les occurences des caractères présents au debut de str.
Divise la chaine de caractère contenue dans le vecteur de la même façon que vct_split mais la chaine passée en paramètre est strictement le délimiteur.
Reproduction de fonctions de la lib C :
- ft_iscntrl
- ft_isblank
- ft_isgraph
- ft_isspace
- ft_xdigit
- ft_strcasecmp
- ft_strcasestr
- ft_atol
- ft_strndup
- ft_strncasecmp
Convertit la chaine str en entier dans la base donnée.
Alloue (avec malloc(3)) et retourne une chaîne de caractères “fraiche” terminée par un ’\0’ représentant l’entier value passé en paramètre dans la base donné. Les nombres négatifs doivent être gérés. Si l’allocation échoue, la fonction renvoie NULL.
Effectue un merge sort sur lst avec pour condition la fonction test passé en paramètre.
Ajoute un élément à la fin de la liste.
Supprime le maillon de la liste qui a pour donnée la même adresse que data.
Renvoie le dernier élément de la liste.
Créer un nouvel élément en copiant le pointeur 'content' et non ce qui est pointé.
Supprime le premier maillon de la liste.
Renvoie la taille de la liste.
Renvoie la factorielle du nombre passé en paramètre.
Renvoie le nombre n à la puissance p.
Renvoie la valeur absolue d'un nombre.
Renvoie la racine carré du nombre passé en paramètre.
Inverse les 4 premiers et les 4 derniers bits d'un octet.
Inverse tout les bits d'un octet.
Renvoie l'integralité d'un fichier.
Intervertit deux entiers.
Affiche chaque bit d'un int.
Affiche un tableau d'int.
Affiche un tableau de strings.
Affiche un entier dans une base donnée.
Effectue un bubble sort sur un tableau d'entiers.
Effectue un bubble sort sur un tableau de strings.
Effectue un insertion sort sur un tableau d'entiers.
Effectue un insertion sort sur un tableau de strings.
Libère un tableau de strings.
Renvoie la taille d'un tableau de strings terminé par NULL.
Verifie si la chaine n'est composé que de minuscules.
Verifie si la chaine n'est composé que de majuscules.
Verifie si la chaine n'est composé que de nombres.
Applique une fonction de test de char à une string.
Duplique une chaine jusqu'à un caractère donné.
Renvoie la taille d'une chaine jusqu'à un caractère donné.
Effectur un strjoin en effectuant un free sur l'une, l'autre ou les deux strings.
Passe une chaine en minuscule.
Passe une chaine en majuscule.
Renvoie la taille d'une chaine d'une taille maximum de n.
Effectue un strsplit sur '\n', '\t' et ' '.