Tuesday, February 5, 2013


Cette annexe donne la syntaxe des principales fonctions de la librairie standard. Une liste exhaustive de toutes les fonctions disponibles figure à l'annexe B de l'ouvrage de Kernighan et Richie. Pour obtenir plus d'informations sur ces fonctions, il suffit de consulter les pages de man correspondant.

A.1  Entrées-sorties <stdio.h>

A.1.1  Manipulation de fichiers

L'usage des fonctions de manipulation de fichiers suivantes est détaillé au chapitre 6.


fonction action
fopen ouverture d'un fichier
fclose fermeture d'un fichier
fflush écriture des buffers en mémoire dans le fichier

A.1.2  Entrées et sorties formatées

La syntaxe de ces fonctions et leur action sont décrites aux paragraphes 1.11 et 6.2-6.3.


fonction prototype action
fprintf int fprintf(FILE *stream, char *format, ...) écriture sur un fichier
fscanf int fscanf(FILE *stream, char *format, ...) lecture depuis un fichier
printf int printf(char *format, ...) écriture sur la sortie standard
scanf int scanf(char *format, ...) lecture depuis l'entrée standard
sprintf int sprintf(char *s, char *format, ...) écriture dans la chaîne de caractères s
sscanf int sscanf(char *s, char *format, ...) lecture depuis la chaîne de caractères s

A.1.3  Impression et lecture de caractères

fonction prototype action
fgetc int fgetc(FILE *stream) lecture d'un caractère depuis un fichier
fputc int fputc(int c, FILE *stream) écriture d'un caractère sur un fichier
getc int getc(FILE *stream) équivalent de fgetc mais implémenté par une macro
putc int putc(int c, FILE *stream) équivalent de fputc mais implémenté par une macro
getchar int getchar(void) lecture d'un caractère depuis l'entrée standard
putchar int putchar(int c) écriture d'un caractère sur la sortie standard
fgets char *fgets(char *s, FILE *stream) lecture d'une chaîne de caractères depuis un fichier
fputs int *fputs(char *s, FILE *stream) écriture d'une chaîne de caractères sur un fichier
gets char *gets(char *s) lecture d'une chaîne de caractères sur l'entrée standard
puts int *puts(char *s) écriture d'une chaîne de caractères sur la sortie standard

A.2  Manipulation de caractères <ctype.h>

Toutes les fonctions ci-dessous permettent de tester une propriété du caractère passé en paramètre. Elles renvoient la valeur 1 si le caractère vérifie la propriété et 0 sinon. Leur prototype est :
int fonction(char c)

fonction renvoie 1 si le caractère est
isalnum une lettre ou un chiffre
isalpha une lettre
iscntrl un caractère de commande
isdigit un chiffre décimal
isgraph un caractère imprimable ou le blanc
islower une lettre minuscule
isprint un caractère imprimable (pas le blanc)
ispunct un caractère imprimable qui n'est ni une lettre ni un chiffre
isspace un blanc
isupper une lettre majuscule
isxdigit un chiffre hexadécimal


On dispose également de deux fonctions permettant la conversion entre lettres minuscules et lettres majuscules :


fonction prototype action
tolower int tolower(int c) convertit c en minuscule si c'est une lettre majuscule, retourne c sinon.
toupper int toupper(int c) convertit c en majuscule si c'est une lettre minuscule, retourne c sinon.

A.3  Manipulation de chaînes de caractères <string.h>

fonction prototype action
strcpy char *strcpy(char *ch1, char *ch2) copie la chaîne ch2 dans la chaîne ch1 ; retourne ch1.
strncpy char *strcpy(char *ch1, char *ch2, int n) copie n caractères de la chaîne ch2 dans la chaîne ch1 ; retourne ch1.
strcat char *strcat(char *ch1, char *ch2) copie la chaîne ch2 à la fin de la chaîne ch1 ; retourne ch1.
strncat char *strncat(char *ch1, char *ch2, int n) copie n caractères de la chaîne ch2 à la fin de la chaîne ch1 ; retourne ch1.
strcmp int strcmp(char *ch1, char *ch2) compare ch1 et ch2 pour l'ordre lexicographique ; retourne une valeur négative si ch1 est inférieure à ch2, une valeur positive si ch1 est supérieure à ch2, 0 si elles sont identiques.
strncmp int strcmp(char *ch1, char *ch2, int n) compare les n premiers caractères de ch1 et ch2.
strchr char *strchr(char *chaine, char c) retourne un pointeur sur la première occurence de c dans chaine, et NULL si c n'y figure pas.
strrchr char *strchr(char *chaine, char c) retourne un pointeur sur la dernière occurence de c dans chaine, et NULL si c n'y figure pas.
strstr char *strchr(char *ch1, char *ch2) retourne un pointeur sur la première occurence de ch2 dans ch1, et NULL si ch2 n'y figure pas.
strlen int strlen(char *chaine) retourne la longueur de chaine.

A.4  Fonctions mathématiques <math.h>

Le résultat et les paramètres de toutes ces fonctions sont de type double. Si les paramètres effectifs sont de type float, ils seront convertis en double par le compilateur.


fonction action
acos arc cosinus
asin arc sinus
atan arc tangente
cos cosinus
sin sinus
tan tangente
cosh cosinus hyperbolique
sinh cosinus hyperbolique
tanh tangente hyperbolique
exp exponentielle
log logarithme népérien
log10 logarithme en base 10
pow puissance
sqrt racine carrée
fabs valeur absolue
fmod reste de la division
ceil partie entière supérieure
floor partie entière inférieure


A.5  Utilitaires divers <stdlib.h>

A.5.1  Allocation dynamique

Ces fonctions sont décrites au chapitre 3, paragraphe 3.4.


fonction action
calloc allocation dynamique et initialisation à zéro.
malloc allocation dynamique
realloc modifie la taille d'une zone préalablement allouée par calloc ou malloc.
free libère une zone mémoire

A.5.2  Conversion de chaînes de caractères en nombres

Les fonctions suivantes permettent de convertir une chaîne de caractères en un nombre.


fonction prototype action
atof double atof(char *chaine) convertit chaine en un double
atoi int atoi(char *chaine) convertit chaine en un int
atol long atol(char *chaine) convertit chaine en un long int

A.5.3  Génération de nombres pseudo-aléatoires

La fonction rand fournit un nombre entier pseudo-aléatoire dans l'intervalle [0,RAND_MAX], où RAND_MAX est une constante prédéfinie au moins égale à 215-1. L'aléa fournit par la fonction rand n'est toutefois pas de très bonne qualité.

La valeur retournée par rand dépend de l'initialisation (germe) du générateur. Cette dernière est égale à 1 par défaut mais elle peut être modifiée à l'aide de la fonction srand.


fonction prototype action
rand int rand(void) fournit un nombre entier pseudo-aléatoire
srand void srand(unsigned int germe) modifie la valeur de l'initialisation du générateur pseudo-aléatoire utilisé par rand.

A.5.4  Arithmétique sur les entiers

fonction prototype action
abs int abs(int n) valeur absolue d'un entier
labs long labs(long n) valeur absolue d'un long int
div div_t div(int a, int b) quotient et reste de la division euclidienne de a par b. Les résultats sont stockés dans les champs quot et rem (de type int) d'une structure de type div_t.
ldiv ldiv_t ldiv(long a, long b) quotient et reste de la division euclidienne de a par b. Les résultats sont stockés dans les champs quot et rem (de type long int) d'une structure de type ldiv_t.

A.5.5  Recherche et tri

Les fonctions qsort et bsearch permettent respectivement de trier un tableau, et de rechercher un élément dans un tableau déjà trié. Leur syntaxe est détaillée au chapitre 4.

A.5.6  Communication avec l'environnement

fonction prototype action
abort void abort(void) terminaison anormale du programme
exit void exit(int etat) terminaison du programme ; rend le contrôle au système en lui fournissant la valeur etat (la valeur 0 est considérée comme une fin normale).
system int system(char *s) exécution de la commande système définie par la chaîne de caractères s.

A.6  Date et heure <time.h>

Plusieurs fonctions permettent d'obtenir la date et l'heure. Le temps est représenté par des objets de type time_t ou clock_t, lesquels correspondent généralement à des int ou à des long int.


fonction prototype action
time time_t time(time_t *tp) retourne le nombre de secondes écoulées depuis le 1er janvier 1970, 0 heures G.M.T. La valeur retournée est assignée à *tp.
difftime double difftime(time_t t1, time_t t2) retourne la différence t1 - t2 en secondes.
ctime char *ctime(time_t *tp) convertit le temps système *tp en une chaîne de caractères explicitant la date et l'heure sous un format prédéterminé.
clock clock_t clock(void) retourne le temps CPU en microsecondes utilisé depuis le dernier appel à clock.


0 comments:

Post a Comment