Bilbiothèque C de fonctions de chaînes de caractères et de fonctions pour listes d'entiers et de chaîne de caractères et système de gestion des fuites mémoire
Actions
Vote :
ScreenshotAperçu
Informations
Catégorie :Category: Utilitaires Autres...
Auteur Author: Bobb
Type : Texte
Taille Size: 4.30 Ko KB
Mis en ligne Uploaded: 18/02/2022 - 16:30:38
Uploadeur Uploader: Bobb (Profil)
Téléchargements Downloads: 22
Visibilité Visibility: Archive publique
Shortlink : http://ti-pla.net/a2866049
Type : Texte
Taille Size: 4.30 Ko KB
Mis en ligne Uploaded: 18/02/2022 - 16:30:38
Uploadeur Uploader: Bobb (Profil)
Téléchargements Downloads: 22
Visibilité Visibility: Archive publique
Shortlink : http://ti-pla.net/a2866049
Description
Blibliothèque de fonctions de chaînes de caractères et de listes.
La bibliothèque inclut stdio.h, stdlib.h, string.h, math.h.
Elle définit trois nouveaux types :
intlist : liste d'entiers ainsi que de nombreuses fonctions associées
ptrlist : liste de pointeurs et fonctions associées
strlist : liste de chaines de caractères ainsi que de nombreuses fonctions associées
La bibliothèque possède un système de détection et de gestion des fuites mémoire.
Pour le faire fonctionner, appelez les fonctions err_malloc() et err_free() au lieu de malloc() et free().
A chaque allocation, la fonction err_malloc() va enregistrer le pointeur alloué dans une liste de pointeurs (ptrlist).
Si vous appelez err_free(), la fonction va retirer le pointeur libéré de la liste de pointeurs, et si vous ne le faites pas, tous vos pointeurs seront libérés après lors de l'appel à freeAllPtr(). Cette fonction vous indiquera le nombre de pointeurs libérés à la fin et leur adresse. Pour utiliser cette gestion de fuites mémoires, voici comment doit être votre fonction main() :
[code]int main(void)
{
allocptr.tab=malloc(0);// crée la liste qui contiendra les pointeurs alloués dynamiquement
allocptr.len=0;//initialise la longueur de base à 0
//ici le corps de votre fonction main
freeAllPtr();//permet de libérer tous les pointeurs alloués dynamiquement par err_malloc() en cas de fuite de mémoire
return 0;
}
[/code]
Voici tous les prototypes de fonctions définies dans la bibliothèque :
[code]void freeAllPtr(void);
void quitError(char* message);
void* err_malloc(size_t taille);
void err_memset(void* ptr, int valeur, size_t taille);
void* err_realloc(void* ptr, size_t taille);
void err_free(void* ptr);
/**************************ptrlist**********************/
ptrlist ptrlist_create(unsigned len);
void ptrlist_append(ptrlist* list, void* ptr);
void ptrlist_remove(ptrlist* list, void* ptr);
unsigned ptrlist_index(ptrlist* list, void* ptr);
/**************************intlist**********************/
intlist intlist_create(unsigned len);
void intlist_aff(intlist* list);
void intlist_append(intlist* list,long long int nombre);
void intlist_resize(intlist* list, unsigned newLen);
void intlist_remove(intlist* list,unsigned index);
unsigned intlist_count(intlist* list, long long int nb);
_Bool intlist_inList(intlist* list, long long int nombre);
int intlist_index(intlist* list, long long int nombre);
void intlist_insert(intlist* list,long long int nombre, unsigned index);
/**************************strlist**********************/
void strlist_destroy(strlist* list);
strlist strlist_create(unsigned len);
void strlist_aff(strlist* list);
void strlist_append(strlist* list, char *chaine);
void strlist_resize(strlist* list, unsigned newLen, _Bool freeElement);
void strlist_remove(strlist* list,unsigned index, _Bool freeElement);
unsigned strlist_count(strlist* list, char* chaine);
_Bool strlist_inList(strlist* list, char* chaine);
int strlist_index(strlist* list, char* chaine);
void strlist_insert(strlist* list,char* chaine, unsigned index);
// Chaines de caractères :
char* sub(char* string,unsigned debut,unsigned fin);//a liberer après
char* replace(char*, char*, char*);//a liberer après
void cleanStdin(void);
char* addStr(char* str1, char* str2);//a liberer après
long double strToNb(char *string);
char* nbToStr(long double number);//a liberer après
unsigned count(char* string, char* search);
void pause(void);
char* input(char *text);//a libérer après
[/code]
La bibliothèque inclut stdio.h, stdlib.h, string.h, math.h.
Elle définit trois nouveaux types :
intlist : liste d'entiers ainsi que de nombreuses fonctions associées
ptrlist : liste de pointeurs et fonctions associées
strlist : liste de chaines de caractères ainsi que de nombreuses fonctions associées
La bibliothèque possède un système de détection et de gestion des fuites mémoire.
Pour le faire fonctionner, appelez les fonctions err_malloc() et err_free() au lieu de malloc() et free().
A chaque allocation, la fonction err_malloc() va enregistrer le pointeur alloué dans une liste de pointeurs (ptrlist).
Si vous appelez err_free(), la fonction va retirer le pointeur libéré de la liste de pointeurs, et si vous ne le faites pas, tous vos pointeurs seront libérés après lors de l'appel à freeAllPtr(). Cette fonction vous indiquera le nombre de pointeurs libérés à la fin et leur adresse. Pour utiliser cette gestion de fuites mémoires, voici comment doit être votre fonction main() :
[code]int main(void)
{
allocptr.tab=malloc(0);// crée la liste qui contiendra les pointeurs alloués dynamiquement
allocptr.len=0;//initialise la longueur de base à 0
//ici le corps de votre fonction main
freeAllPtr();//permet de libérer tous les pointeurs alloués dynamiquement par err_malloc() en cas de fuite de mémoire
return 0;
}
[/code]
Voici tous les prototypes de fonctions définies dans la bibliothèque :
[code]void freeAllPtr(void);
void quitError(char* message);
void* err_malloc(size_t taille);
void err_memset(void* ptr, int valeur, size_t taille);
void* err_realloc(void* ptr, size_t taille);
void err_free(void* ptr);
/**************************ptrlist**********************/
ptrlist ptrlist_create(unsigned len);
void ptrlist_append(ptrlist* list, void* ptr);
void ptrlist_remove(ptrlist* list, void* ptr);
unsigned ptrlist_index(ptrlist* list, void* ptr);
/**************************intlist**********************/
intlist intlist_create(unsigned len);
void intlist_aff(intlist* list);
void intlist_append(intlist* list,long long int nombre);
void intlist_resize(intlist* list, unsigned newLen);
void intlist_remove(intlist* list,unsigned index);
unsigned intlist_count(intlist* list, long long int nb);
_Bool intlist_inList(intlist* list, long long int nombre);
int intlist_index(intlist* list, long long int nombre);
void intlist_insert(intlist* list,long long int nombre, unsigned index);
/**************************strlist**********************/
void strlist_destroy(strlist* list);
strlist strlist_create(unsigned len);
void strlist_aff(strlist* list);
void strlist_append(strlist* list, char *chaine);
void strlist_resize(strlist* list, unsigned newLen, _Bool freeElement);
void strlist_remove(strlist* list,unsigned index, _Bool freeElement);
unsigned strlist_count(strlist* list, char* chaine);
_Bool strlist_inList(strlist* list, char* chaine);
int strlist_index(strlist* list, char* chaine);
void strlist_insert(strlist* list,char* chaine, unsigned index);
// Chaines de caractères :
char* sub(char* string,unsigned debut,unsigned fin);//a liberer après
char* replace(char*, char*, char*);//a liberer après
void cleanStdin(void);
char* addStr(char* str1, char* str2);//a liberer après
long double strToNb(char *string);
char* nbToStr(long double number);//a liberer après
unsigned count(char* string, char* search);
void pause(void);
char* input(char *text);//a libérer après
[/code]