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érieVariables et description
1size_t
Il s'agit d'un type entier non signé, qui estsizeofle résultat du mot-clé.
2wchar_t
Il s'agit d'un type entier pour la taille d'une constante de caractère large.
3div_t
C'estdivla structure renvoyée par la fonction.
4ldiv_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érieMacros & Description
1NULL
Cette macro est la valeur d'une constante de pointeur nul.
2EXIT_FAILURE
C'est la valeur à renvoyer lorsque la fonction exit échoue.
3EXIT_SUCCESS
C'est la valeur à renvoyer lorsque la fonction exit réussit.
4RAND_MAX
Cette macro est la valeur maximale renvoyée par la fonction rand.
5MB_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érieFonctions et description
1double atof(const char *str)
Passez le paramètrestrConvertit la chaîne pointée en un nombre à virgule flottante (de type double).
2int atoi(const char *str)
Passez le paramètrestrConvertit la chaîne pointée en un entier (de type int).
3long int atol(const char *str)
Passez le paramètrestrConvertit la chaîne pointée en un entier long (de type long int).
4double strtod(const char *str, char **endptr)
Passez le paramètrestrConvertit la chaîne pointée en un nombre à virgule flottante (de type double).
5long 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).
6unsigned 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).
7void *calloc(size_t nitems, size_t size)
Alloue l'espace mémoire requis et retourne un pointeur vers celui-ci.
8void free(void *ptr)
Appelez avant de libérercalloc, oureallocl'espace mémoire alloué.
9void *malloc(size_t size)
Alloue l'espace mémoire requis et retourne un pointeur vers celui-ci.
10void *realloc(void *ptr, size_t size)
Appelez avant de tenter de redimensionnermallocoucallocla taille du bloc de mémoire alloué pointé par ptr.
11void abort(void)
Provoque une terminaison anormale du programme.
12int atexit(void (*func)(void))
Appelle la fonction spécifiée lorsque le programme se termine normalement.func。
13void exit(int status)
Provoque la terminaison normale du programme.
14char *getenv(const char *name)
Recherche la chaîne d'environnement pointée par name et renvoie la valeur associée à la chaîne.
15int 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.
16void *bsearch(const void *key, const void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *))
Effectue une recherche binaire.
17void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))
Trie le tableau.
18int abs(int x)
Renvoie la valeur absolue de x.
19div_t div(int numer, int denom)
Divise le numérateur par le dénominateur.
20long int labs(long int x)
Renvoie la valeur absolue de x.
21ldiv_t ldiv(long int numer, long int denom)
Divise le numérateur par le dénominateur.
22int rand(void)
Retourne un nombre pseudo-aléatoire compris entre 0 etRAND_MAX.
23void 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é.
24int mblen(const char *str, size_t n)
Retourne le paramètrestrLa longueur du caractère multioctet pointé.
25size_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.
26int mbtowc(wchar_t *pwc, const char *str, size_t n)
Vérifier les paramètresstrLe caractère multioctet pointé.
27size_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.
28int 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 <stdio.h>
#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 <stdio.h>
#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 <stdio.h>
#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 <stdio.h>
#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

  • Utilisationmalloc、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.

autres extensions