Révision n°1.8 du 18/05/2008

Définitions standards du C

Sommaire

Où obtenir de la documentation sur les fonctions de la bibliothèque standard ?

La source idéale serait la norme, bien évidemment, mais elle n’est certainement pas le document le plus accessible qui soit. Pour les courageux, sachez qu’une version brouillon est disponible sur le site du groupe de standardisation travaillant sur le langage C.

Dans le cas contraire, vous pouvez également trouver de la documentation peut-être plus accessibles…

Sur votre système

Un autre moyen de vous procurer de la bonne documentation est de lire celle correspondant à votre système.

Sous un système de type Unix, cela signifie lire la page de manuel (man page) grâce à la commande :

$ man NOM_DE_LA_FONCTION

Si vous utilisez un système GNU, les pages info sont également disponibles :

$ info NOM_DE_LA_FONCTION

Sous Windows, si vous avez Visual Studio ou le Platform SDK installé, vous devriez avoir accès à un fichier d’aide en HTML compilé (.chm) que vous pouvez ouvrir depuis l’interface de Visual Studio. Il comporte normalement un index et une recherche.

Sur le web

Vous trouverez beaucoup de pages de manuel sur la toile. Il vous suffit de faire une recherche du type :

man NOM_DE_LA_FONCTION SYSTÈME

N’oubliez pas de préciser votre système sous peine de tomber sur des pages qui ne sont pas adaptées. Cela ne fonctionne évidemment que si vous êtes sous un unixoïde.

À noter que le site Developpez.com propose les pages de manuel de Linux en français. Les projets BSD possèdent chacun leur propre site dédié disposant d’une section pour les pages de manuel, sur NetBSD.org, par exemple, si vous utilisez NetBSD.

En ce qui concerne Windows, enfin, la MSDN est une source d’information très complète. Il vous faudra trouver la page correspondant à la bibliothèque C standard. Pour cela, recherchez les termes C Run-Time Library, ou simplement CRT, accompagnés du nom de la fonction.

Contenu de la bibliothèque standard

La première colonne correspond au type d’usage que l’on fait de l’entité dont le nom figure en deuxième colonne : T correspond à type, C à constante, V à valeur, F à fonction et M à macro. Je parle là d’usage : les constantes sont en vérité définies comme des macros, et certaines fonctions peuvent l’être également. La distinction principale entre une fonction et une « macro » telle que j’emploie le terme ici est qu’il faut faire attention à ne pas inclure d’effet de bord dans les expressions passées en arguments à une macro, celle-ci pouvant les évaluer plusieurs fois, ce qui serait inattendu et incontrôlable, donc catastrophique.

Définitions usuelles (<stddef.h>)

T ptrdiff_t différence (en octets) de deux pointeurs
T size_t taille d’objets contigus en mémoire
T wchar_t caractère étendu (souvent, Unicode)
C NULL constante de pointeur nul
M offsetof position (en octets) d’un membre dans une structure

Capacité des types entiers (<limits.h>)

C CHAR_BIT nombre de bits dans un octet
C SCHAR_MIN valeur minimale d’un signed char (-127 ou moins)
C SCHAR_MAX valeur maximale d’un signed char (127 ou plus)
C UCHAR_MAX valeur maximale d’un unsigned char (255 ou plus)
C CHAR_MIN valeur minimale d’un char ; vaut SCHAR_MIN ou 0
C CHAR_MAX valeur maximale d’un char ; vaut SCHAR_MAX ou UCHAR_MAX
C SHRT_MIN valeur minimale d’un short (-32767 ou moins)
C SHRT_MAX valeur maximale d’un short (32767 ou plus)
C USHRT_MAX valeur maximale d’un unsigned short (65535 ou plus)
C INT_MIN valeur minimale d’un int (-32767 ou moins)
C INT_MAX valeur maximale d’un int (32767 ou plus)
C UINT_MAX valeur maximale d’un unsigned int (65535 ou plus)
C LONG_MIN valeur minimale d’un long (-2147483647 ou moins)
C LONG_MAX valeur maximale d’un long (2147483647 ou plus)
C ULONG_MAX valeur maximale d’un unsigned long (4294967295 ou plus)
C MB_LEN_MAX nombre maximal d’octets par caractère polyoctet

Propriétés des types flottants (<float.h>)

C FLT_RADIX base de l’exposant (2 ou plus)
C FLT_MANT_DIG nombre de chiffres significatifs en base FLT_RADIX d’un float
C FLT_MIN_EXP exposant minimal en base FLT_RADIX d’un float
C FLT_MAX_EXP exposant maximal en base FLT_RADIX d’un float
C FLT_DIG nombre de chiffres significatifs en base 10 d’un float (6 ou plus)
C FLT_MIN_10_EXP exposant minimal en base 10 d’un float (-37 ou moins)
C FLT_MAX_10_EXP exposant minimal en base 10 d’un float (37 ou moins)
C FLT_EPSILON différence entre 1 et le float supérieur le plus proche (1e-5 ou moins)
C FLT_MIN valeur absolue minimale d’un float (1e-37 ou moins)
C FLT_MAX valeur absolue maximale d’un float (1e37 ou plus)
C DBL_MANT_DIG nombre de chiffres significatifs en base FLT_RADIX d’un double
C DBL_MIN_EXP exposant minimal en base FLT_RADIX d’un double
C DBL_MAX_EXP exposant maximal en base FLT_RADIX d’un double
C DBL_DIG nombre de chiffres significatifs en base 10 d’un double (10 ou plus)
C DBL_MIN_10_EXP exposant minimal en base 10 d’un double (-37 ou moins)
C DBL_MAX_10_EXP exposant minimal en base 10 d’un double (37 ou moins)
C DBL_EPSILON différence entre 1 et le double supérieur le plus proche (1e-5 ou moins)
C DBL_MIN valeur absolue minimale d’un double (1e-37 ou moins)
C DBL_MAX valeur absolue maximale d’un double (1e37 ou plus)
C LDBL_MANT_DIG nombre de chiffres significatifs en base FLT_RADIX d’un long double
C LDBL_MIN_EXP exposant minimal en base FLT_RADIX d’un long double
C LDBL_MAX_EXP exposant maximal en base FLT_RADIX d’un long double
C LDBL_DIG nombre de chiffres significatifs en base 10 d’un long double (10 ou plus)
C LDBL_MIN_10_EXP exposant minimal en base 10 d’un long double (-37 ou moins)
C LDBL_MAX_10_EXP exposant minimal en base 10 d’un long double (37 ou moins)
C LDBL_EPSILON différence entre 1 et le long double supérieur le plus proche (1e-9 ou moins)
C LDBL_MIN valeur absolue minimale d’un long double (1e-37 ou moins)
C LDBL_MAX valeur absolue maximale d’un long double (1e37 ou plus)

Opérations sur les chaînes de caractères (<string.h>)

Opérations sur les zones de mémoire

F memset remplit une zone de mémoire par répétition d’un octet
F memcpy copie un zone de mémoire dans une zone disjointe
F memmove copie un zone de mémoire dans une autre
F memcmp compare une zone de mémoire à une autre
F memchr première occurrence d’un octet dans une zone

Opérations sur les chaînes

F strlen longueur d’une chaîne
F strcpy copie une chaîne dans une zone de mémoire
F strncpy copie une chaîne limitée en longueur dans une zone de mémoire
F strcat concatène une chaîne à la suite d’une autre
F strncat concatène une chaîne limitée en longueur à la suite d’une autre
F strcmp compare deux chaînes
F strncmp compare deux chaînes limitées en longueur
F strcoll compare deux chaînes en tenant compte des paramètres régionaux
F strxfrm met une chaîne sous une forme « normale »
F strchr première occurrence d’un caractère dans une chaîne
F strrchr dernière occurrence d’un caractère dans une chaîne
F strpbrk première occurrence d’un caractère d’un ensemble de caractères donné
F strspn longueur du préfixe maximal constitué de caractères d’un ensemble de caractères donné
F strcspn longueur du préfixe maximal sans caractère d’un ensemble de caractères donné
F strstr première occurrence d’une chaîne dans une autre
F strtok découpage d’une chaîne à chaque caractères d’un ensemble donné
F strerror chaîne décrivant un code d’erreur

Divers

T size_t voyez stddef.h
C NULL voyez stddef.h

Classification des caractères (<ctype.h>)

M isprint teste si un caractère a un glyphe
M isgraph teste si un caractère a un glyphe, non blanc
M isalnum teste si un caractère est une lettre ou un chiffre
M isalpha teste si un caractère est une lettre
M isupper teste si un caractère est une lettre majuscule
M islower teste si un caractère est une lettre minuscule
M isdigit teste si un caractère est un chiffre
M isxdigit teste si un caractère est un chiffre hexadécimal
M ispunct teste si un caractère est un signe de ponctuation
M isspace teste si un caractère est une sorte d’espace
M iscntrl teste si un caractère est un caractère de contrôle
M tolower convertit un caractère en minuscule
M toupper convertit un caractère en majuscule

Fonctions mathématiques (<math.h>)

Sous les systèmes de type Unix, il faut lier le programme avec la bibliothèque -lm.

F fabs valeur absolue
F fmod reste
F ceil plafond
F floor plancher
F modf parties entières et fractionnaires
F cos cosinus
F sin sinus
F tan tangente
F acos arc cosinus
F asin arc sinus
F atan arc tangente
F atan2 arc tangente de deux variables avec ajustement du cadrant
F exp exponentielle
F cosh cosinus hyperbolique
F sinh sinus hyperbolique
F tanh tangente hyperbolique
F log logarithme népérien
F log10 logarithme en base 10
F pow puissance
F sqrt racine carrée
F frexp décomposition en fraction normalisée en base 2
F ldexp produit par une puissance de 2
C HUGE_VAL valeur représentant un dépassement de capacité

Entrées, sorties et manipulations de fichiers (<stdio.h>)

Opérations sur les fichiers

C FILENAME_MAX taille recommandée d’un tableau contenant un nom de fichier
C L_tmpnam taille requise d’un tableau pour un nom de fichier temporaire
C TMP_MAX minimum garanti de noms de fichier temporaires uniques
F remove supprime un fichier
F rename renomme (déplace) un fichier
F tmpnam génère un nom de fichier temporaire

Opérations sur les flux

T FILE flux d’entrée ou de sortie
T fpos_t position dans un fichier ; pour fgetpos et fsetpos
C FOPEN_MAX minimum garanti de fichiers pouvant être ouverts simultanément
C EOF indicateur de fin d’erreur ou de fin de fichier
V stdin flux entrant standard (souvent, la console)
V stdout flux sortant standard (souvent, la console)
V stderr flux sortant pour les erreurs (souvent, la console)
F tmpfile ouvre un flux temporaire
F fopen ouvre un fichier
F fclose ferme un flux
F freopen rouvre un fichier
F feof différencie une fin de fichier d’une erreur
F ferror différencie une erreur d’une fin de fichier
F clearerr suppression de l’indicateur d’erreur sur un flux
F ftell position actuelle du curseur d’un flux
F fseek déplace le curseur dans un flux
F rewind déplace le curseur d’un flux au début
C SEEK_SET point de référence pour fseek : début du flux
C SEEK_CUR point de référence pour fseek : position actuelle
C SEEK_END point de référence pour fseek : fin du flux
F fgetpos position étendue du curseur (fpos_t)
F fsetpos déplace le curseur à une position étendue (fpos_t)
F setbuf active l’emploi d’un tampon complet pour un flux
F setvbuf décide de l’emploi d’un tampon pour un flux
C _IOFBF mode pour setvbuf : emploi d’un tampon complet
C _IOLBF mode pour setvbuf : emploi d’un tampon pour une ligne
C _IONBF mode pour setvbuf : emploi d’aucun tampon
C BUFSIZ taille par défaut du tampon
F fflush force la synchronisation d’un flux sortant avec son support

Opérations d’entrée et de sortie

F fgetc lit un caractère
M getc version macro de fgetc ; lit un caractère
M getchar lit un caractère sur stdin
F fputc écrit un caractère
M putc version macro de fputc; écrit un caractère
M putchar écrit un caractère sur stdout
F ungetc ajoute un caractère à lire au début d’un flux entrant
F fgets lit une ligne
F fputs écrit une chaîne de caractères
F puts écrit une chaîne de caractères et retour à la ligne sur stdout
F fread lit par blocs
F fwrite écrit par blocs
F fscanf lit selon un format
F scanf lit selon un format sur stdin
F fprintf écrit selon un format
F printf écrit selon un format sur stdout
F vfprintf écrit selon un format avec une va_list
F vprintf écrit selon un format avec une va_list sur stdin
F sscanf lit selon un format depuis une chaîne
F sprintf écrit selon un format, dans une chaîne
F vsprintf écrit selon un format, dans une chaîne, avec une va_list
F perror écrit un message d’erreur associé à la valeur d’errno

Divers

T size_t voyez stddef.h
C NULL voyez stddef.h
F gets dangereuse

gets n’aura pas plus de description. Si vous aviez une vraie raison vous poussant à l’utiliser (et je n’en vois aucune), vous n’auriez pas besoin de moi pour vous la rappeler.

Utilitaires généraux (<stdlib.h>)

Interaction avec l’environnement

F abort abandonne (termine brutalement) le programme
F atexit enregistre une fonction à exécuter en fin de programme
F exit termine l’exécution du programme
C EXIT_FAILURE code pour exit : échec
C EXIT_SUCCESS code pour exit : réussite
F getenv récupère une variable d’environnement par son nom
F system exécute une commande au shell

Gestion de la mémoire

F malloc alloue un bloc de mémoire
F calloc alloue un tableau dont les bits sont initialisés à 0
F free libère de la mémoire précédemment allouée
F realloc change la taille d’un bloc de mémoire

Utilitaires

T div_t type de retour de div
T ldiv_t type de retour de ldiv
F abs valeur absolue d’un int
F labs valeur absolue d’un long
F div division euclidienne d’int
F ldiv division euclidienne de long
F strtol convertit un nombre sous forme textuelle en long
F strtoul convertit un nombre sous forme textuelle en unsigned long
F strtod convertit un nombre sous forme textuelle en double
F atoi convertit un nombre sous forme textuelle en int
F atol convertit un nombre sous forme textuelle en long
F atof convertit un nombre sous forme textuelle en float
F qsort trie un tableau
F bsearch recherche dans un tableau trié

Chaînes de caractères polyoctets

V MB_CUR_MAX nombre maximal d’octets par caractère polyoctet avec les paramètres régionaux en vigueur
F mblen longueur d’un caractère polyoctet
F mbtowc convertit un caractère polyoctet en caractère étendu
F wctomb convertit un caractère étendu en caractère polyoctet
F mbstowcs convertit une chaîne de caractères polyoctets en chaîne de caractères étendus
F wcstombs convertit une chaîne de caractères étendus en chaîne de caractères polyoctets

Nombres aléatoires

C RAND_MAX nombre maximal pouvant être généré par rand
F srand initialise le générateur aléatoire
F rand génère un entier aléatoire

Divers

T size_t voyez stddef.h
T wchar_t voyez stddef.h
C NULL voyez stddef.h

Dates et heures (<time.h>)

T time_t type arithmétique représentant le temps écoulé depuis l’Époque
T struct tm date et heure sous forme décomposée
T clock_t nombre de battements renvoyés par clock
C CLOCKS_PER_SEC nombre de battements renvoyés par clock par seconde
F time instant présent
F difftime nombre de secondes entre deux time_t
F mktime crée un time_t à partir d’un struct tm
F gmtime décompose un time_t en un struct tm selon l’heure GMT
F localtime décompose un time_t en un struct tm selon l’heure locale
F strftime écrit un struct tm selon un format, dans une chaîne
F ctime convertit un time_t en représentation textuelle
F asctime convertit un struct tm en représentation textuelle
F clock compteur temporel usant d’une unité arbitraire
T size_t voyez stddef.h
C NULL voyez stddef.h

Diagnostic (<assert.h>)

M NDEBUG supprime les appels à assert si défini
M assert abandon conditionnel du programme avec message d’erreur

Gestion des erreurs du système (<errno.h>)

V errno en cas d’erreur, expression la décrivant
C EDOM valeur possible d’errno : erreur mathématique de domaine
C ERANGE valeur possible d’errno : erreur mathématique d’intervalle

Gestion des signaux (<signal.h>)

T sig_atomic_t type entier muni d’opérations atomiques
F raise émet un signal
F signal enregistre une action à effectuer à la réception d’un signal
C SIGABRT signal d’abandon du programme
C SIGFPE signal d’erreur de calcul flottant
C SIGILL signal d’instruction illégale
C SIGINT signal interactif
C SIGSEGV signal d’erreur d’accès à la mémoire
C SIGTERM signal de terminaison extérieure du programme
C SIG_DFL action pour signal : action par défaut
C SIG_IGN action pour signal : ignore un signal reçu
C SIG_ERR valeur indicant une erreur

Considérations régionales (<locale.h>)

T struct lconv paramètres régionaux
C LC_ALL catégorie pour setlocale : toute catégorie
C LC_COLLATE catégorie pour setlocale : ordre des caractères
C LC_CTYPE catégorie pour setlocale : classification des caractères
C LC_MONETARY catégorie pour setlocale : système monétaire
C LC_NUMERIC catégorie pour setlocale : nombres
C LC_TIME catégorie pour setlocale : dates et heures
F setlocale change ou examine la locale en vigueur
F localeconv informations sur l’écriture des nombres
C NULL voyez stddef.h

Gestion des listes d’arguments variables (<stdarg.h>)

T va_list liste d’arguments variable
M va_start début d’itération sur une liste d’arguments variable
M va_arg prochain argument dans une liste d’arguments variable
M va_end fin d’itération sur une liste d’arguments variable

Sauts inter-procéduraux (<setjmp.h>)

T jmp_buf informations contextuelles pour les sauts
F setjmp sous certaines réserves, sauvegarde le contexte actuel
F longjmp téléporte vers un contexte sauvegardé

Remarques

On semble en douter ; je vais donc clarifier les choses. Toutes les descriptions ici présentes sont de moi ; je ne les ai pas recopiées d’une autre source ; je n’en ai pas le droit, pas plus qu’un autre a le droit de reprendre mon travail à son compte.

Je sais que certains grands sites dont je tairai le nom n’hésitent pas à reproduire des paragraphes entiers d’autres documentations en apposant leurs noms d’auteur dessus. Mon site est certes modeste, mais le contenu est de ma main.

Formats alternatifs : source (mdown)
Thèmes :