Bibliothèque standard C -<stdlib.h>
Introduction
stdlib .hLe fichier d'en-tête définit quatre types de variables, certaines macros et diverses fonctions utilitaires générales.
<stdlib.h>est un fichier d'en-tête de la bibliothèque standard C qui fournit de nombreuses fonctions utilitaires à usage général, notamment l'allocation de mémoire, le contrôle de processus, le tri et la recherche, et la conversion de chaînes, entre autres.
Variables de la bibliothèque
Les types de variables suivants sont définis dans le fichier d'en-tête stdlib.h :
| Numéro de série | Variables et description |
|---|---|
| 1 | size_t Il s'agit d'un type entier non signé, qui estsizeofle résultat du mot-clé. |
| 2 | wchar_t Il s'agit d'un type entier pour la taille d'une constante de caractère large. |
| 3 | div_t C'estdivla structure renvoyée par la fonction. |
| 4 | ldiv_t C'estldivla structure renvoyée par la fonction. |
Macros de bibliothèque
Les macros suivantes sont définies dans le fichier d'en-tête stdlib.h :
| Numéro de série | Macros & Description |
|---|---|
| 1 | NULL Cette macro est la valeur d'une constante de pointeur nul. |
| 2 | EXIT_FAILURE C'est la valeur à renvoyer lorsque la fonction exit échoue. |
| 3 | EXIT_SUCCESS C'est la valeur à renvoyer lorsque la fonction exit réussit. |
| 4 | RAND_MAX Cette macro est la valeur maximale renvoyée par la fonction rand. |
| 5 | MB_CUR_MAX Cette macro représente le nombre maximal de caractères dans un jeu de caractères multioctets, qui ne peut pas être supérieur à MB_LEN_MAX. |
Fonctions de bibliothèque
Les fonctions suivantes sont définies dans le fichier d'en-tête stdlib.h :
| Numéro de série | Fonctions et description |
|---|---|
| 1 | double atof(const char *str) Passez le paramètrestrConvertit la chaîne pointée en un nombre à virgule flottante (de type double). |
| 2 | int atoi(const char *str) Passez le paramètrestrConvertit la chaîne pointée en un entier (de type int). |
| 3 | long int atol(const char *str) Passez le paramètrestrConvertit la chaîne pointée en un entier long (de type long int). |
| 4 | double strtod(const char *str, char **endptr) Passez le paramètrestrConvertit la chaîne pointée en un nombre à virgule flottante (de type double). |
| 5 | long int strtol(const char *str, char **endptr, int base) Passez le paramètrestrConvertit la chaîne pointée en un entier long (de type long int). |
| 6 | unsigned long int strtoul(const char *str, char **endptr, int base) Passez le paramètrestrConvertit la chaîne pointée en un entier long non signé (de type unsigned long int). |
| 7 | void *calloc(size_t nitems, size_t size) Alloue l'espace mémoire requis et retourne un pointeur vers celui-ci. |
| 8 | void free(void *ptr) Appelez avant de libérercalloc, oureallocl'espace mémoire alloué. |
| 9 | void *malloc(size_t size) Alloue l'espace mémoire requis et retourne un pointeur vers celui-ci. |
| 10 | void *realloc(void *ptr, size_t size) Appelez avant de tenter de redimensionnermallocoucallocla taille du bloc de mémoire alloué pointé par ptr. |
| 11 | void abort(void) Provoque une terminaison anormale du programme. |
| 12 | int atexit(void (*func)(void)) Appelle la fonction spécifiée lorsque le programme se termine normalement.func。 |
| 13 | void exit(int status) Provoque la terminaison normale du programme. |
| 14 | char *getenv(const char *name) Recherche la chaîne d'environnement pointée par name et renvoie la valeur associée à la chaîne. |
| 15 | int system(const char *string) La commande spécifiée par string est transmise à l'environnement hôte pour être exécutée par le processeur de commandes. |
| 16 | void *bsearch(const void *key, const void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *)) Effectue une recherche binaire. |
| 17 | void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*)) Trie le tableau. |
| 18 | int abs(int x) Renvoie la valeur absolue de x. |
| 19 | div_t div(int numer, int denom) Divise le numérateur par le dénominateur. |
| 20 | long int labs(long int x) Renvoie la valeur absolue de x. |
| 21 | ldiv_t ldiv(long int numer, long int denom) Divise le numérateur par le dénominateur. |
| 22 | int rand(void) Retourne un nombre pseudo-aléatoire compris entre 0 etRAND_MAX. |
| 23 | void srand(unsigned int seed) Cette fonction initialise le générateur de nombres aléatoires utilisé par la fonctionrandle générateur de nombres aléatoires utilisé. |
| 24 | int mblen(const char *str, size_t n) Retourne le paramètrestrLa longueur du caractère multioctet pointé. |
| 25 | size_t mbstowcs(schar_t *pwcs, const char *str, size_t n) Passe le paramètrestrLa chaîne de caractères multioctets pointée est convertie en paramètres.pwcsLe tableau qu'il pointe. |
| 26 | int mbtowc(wchar_t *pwc, const char *str, size_t n) Vérifier les paramètresstrLe caractère multioctet pointé. |
| 27 | size_t wcstombs(char *str, const wchar_t *pwcs, size_t n) Placez le tableaupwcsL'encodage qui y est stocké est converti en caractères multioctets et stocké dans la chaîne.strDans. |
| 28 | int wctomb(char *str, wchar_t wchar) Vérifie par rapport au paramètrewcharL'encodage du caractère multioctet donné. |
Exemple
Ce qui suit utilise<stdlib.h>Exemples de quelques fonctions dans.
Allocation dynamique de mémoire :
Exemple
#include <stdlib.h>
int main() {
int *array = (int*)malloc(10 * sizeof(int));
if (array == NULL) {
perror("Échec de l'allocation mémoire");
return 1;
}
for (int i = 0; i < 10; i++) {
array[i] = i;
printf("%d ", array[i]);
}
printf("\n");
free(array);
return 0;
}
Génération de nombres pseudo-aléatoires :
Exemple
#include <stdlib.h>
#include <time.h>
int main() {
srand(time(NULL));
for (int i = 0; i < 10; i++) {
printf("%d ", rand() % 100);
}
printf("\n");
return 0;
}
Conversion de chaîne :
Exemple
#include <stdlib.h>
int main() {
const char *str = "12345";
int num = atoi(str);
printf("L'entier est %d\n", num);
return 0;
}
Tri rapide :
Exemple
#include <stdlib.h>
int compare(const void *a, const void *b) {
return (*(int*)a - *(int*)b);
}
int main() {
int array[] = {5, 2, 9, 1, 5, 6};
int size = sizeof(array) / sizeof(array[0]);
qsort(array, size, sizeof(int), compare);
for (int i = 0; i < size; i++) {
printf("%d ", array[i]);
}
printf("\n");
return 0;
}
Notes
- Utilisation
malloc、callocetreallocLa mémoire allouée doit être libérée à l'aide defreepour éviter les fuites. atoi、atoletatofLa fonction ne fournit pas de vérification d'erreur ; assurez-vous que le format d'entrée est correct lors de son utilisation. Il est recommandé d'utiliserstrtol、strtouletstrtodpour effectuer des conversions plus sûres.qsortetbsearchLa fonction nécessite une fonction de comparaison personnalisée pour gérer différents types de données et exigences de tri.
En comprenant et en utilisant<stdlib.h>Les fonctions fournies permettent des opérations telles que la gestion de la mémoire, le contrôle des processus, la génération de nombres aléatoires, la gestion de l'environnement, les conversions mathématiques, ainsi que le tri et la recherche dans les programmes C, permettant ainsi d'écrire des programmes plus flexibles et riches en fonctionnalités.