You are on page 1of 101

Langage de programmation C

6. Notions connexes
Sommaire
I. Allocation dynamique de mémoire

I. Structures

II. Énumérations

III. Unions

IV. Types synonymes

V. Manipulation de fichiers
2 Langage de programmation C ESI 2021-2022
Allocation dynamique de
mémoire
Allocation de mémoire
 Quand une variable est déclarée, un espace mémoire
lui est réservé dépendamment de son type

 Quand un pointeur est déclaré, il ne peut être utilisé


par la suite que s’il est initialisé (par l’adresse d’une
variable) ou si de la mémoire lui est allouée

4 Langage de programmation C ESI 2021-2022


Allocation dynamique de mémoire
 L’allocation dynamique de la mémoire se fait par la
fonction malloc de la bibliothèque stdlib.h

void* malloc(size_t nbOctets) ;

 À la fin de l’utilisation, il est nécessaire de libérer la


mémoire précédemment allouée avec la fonction free

void* free(void *) ;

5 Langage de programmation C ESI 2021-2022


Allocation dynamique de mémoire
 Exemple

6 Langage de programmation C ESI 2021-2022


Allocation dynamique de mémoire
 Exemple

7 Langage de programmation C ESI 2021-2022


Structures
Intérêt et motivation
 Le langage C offre plusieurs types prédéfinis pour les
variables (int, float, char…)

 Les types prédéfinis peuvent être insuffisants à


répondre aux besoins de l’utilisateur

 Exemple : représenter les étudiants avec, pour chacun, le


numéro, le nom, le prénom, l’adresse, l’e-mail, le niveau, le
cycle, le groupe, …  tableau ?

9 Langage de programmation C ESI 2021-2022


Intérêt et motivation
 Comme pour les tableaux qui permettent de
manipuler une seule variable au lieu de n variables de
même types, il serait aussi intéressant de regrouper,
en une seule variable, n variables de types
quelconques

10 Langage de programmation C ESI 2021-2022


Intérêt et motivation
 Comme pour les tableaux qui permettent de
manipuler une seule variable au lieu de n variables de
même types, il serait aussi intéressant de regrouper,
en une seule variable, n variables de types
quelconques

 Structures de données

11 Langage de programmation C ESI 2021-2022


Définition
 Structure de données (ou type composé)

 Type créé par l’utilisateur, selon ses besoins, pour


regrouper des variables de types quelconques

12 Langage de programmation C ESI 2021-2022


Définition
 Structure de données (ou type composé)

 Type créé par l’utilisateur, selon ses besoins, pour


regrouper des variables de types quelconques

 En général, une structure de données est issue d’un travail


de modélisation afin de choisir, pour un objet du monde
réel qui doit être manipulé dans une application
informatique, la liste des propriétés qui vont représenter
cet objet
13 Langage de programmation C ESI 2021-2022
Définition
 Syntaxe de la définition d’une structure
struct NomDeLaStructure
{
type1 nomChamps1 ;
type2 nomChamps2 ;
type3 nomChamps3 ;

typeN nomChampsN ;
};
14 Langage de programmation C ESI 2021-2022
Définition
 Syntaxe de la définition d’une structure
struct NomDeLaStructure
 Il est recommandé de
{
commencer le nom de la
type1 nomChamps1 ;
structure par une majuscule (ou
type2 nomChamps2 ;
commencer par t_) pour la
type3 nomChamps3 ;
différencier avec les variables

 La définition est à mettre dans typeN nomChampsN ;
un fichier header (.h) };
15 Langage de programmation C ESI 2021-2022
Définition
 Syntaxe de la définition d’une structure

 Exemple :

struct Date
{
int jour ;
int mois ;
int annee ;
};

16 Langage de programmation C ESI 2021-2022


Définition
 Syntaxe de la définition d’une structure

 Exemple : struct Etudiant


{
int numero ;
char nom[50] ;
char prenom[50] ;
char *adresse ;
int niveau ;
char *cycle ;
char groupe ;
};
17 Langage de programmation C ESI 2021-2022
Utilisation
 Syntaxe de la déclaration d’une variable de type
structure

struct NomDeLaStructure nomDeLaVariable ;

18 Langage de programmation C ESI 2021-2022


Utilisation
 Syntaxe de la déclaration d’une variable de type
structure struct NomDeLaStructure
{
type1 nomChamps1 ;
type2 nomChamps2 ;
type3 nomChamps3 ;

typeN nomChampsN ;
} nomDeLaVariable ;
19 Langage de programmation C ESI 2021-2022
Utilisation
 Syntaxe de la déclaration d’une variable de type
structure struct NomDeLaStructure
{
type1 nomChamps1 ;
type2 nomChamps2 ;
type3 nomChamps3 ;

typeN nomChampsN ;
} nomDeLaVariable1, nomDeLaVariable2 ;
20 Langage de programmation C ESI 2021-2022
Utilisation
 Syntaxe de la déclaration d’une variable de type
structure

 Exemple :

struct Etudiant monEtudiant ;

struct Date date ;

21 Langage de programmation C ESI 2021-2022


Utilisation
 Syntaxe de la déclaration d’une variable de type
structure

 Exemple :

struct Etudiant monEtudiant ;

struct Date date ;

Taille réservée pour la variable ?

22 Langage de programmation C ESI 2021-2022


Utilisation
 Syntaxe de la manipulation d’une variable de type
structure

nomDeLaVariable.nomChamps = valeur ;

23 Langage de programmation C ESI 2021-2022


Utilisation
 Syntaxe de la manipulation d’une variable de type
structure

 Exemple :

monEtudiant.niveau = 2 ;

date.annee = 2021 ;

24 Langage de programmation C ESI 2021-2022


Utilisation
 Exemple :

25 Langage de programmation C ESI 2021-2022


Utilisation
 Exemple :

26 Langage de programmation C ESI 2021-2022


Utilisation
 Exemple :

27 Langage de programmation C ESI 2021-2022


Utilisation
 Exemple :

28 Langage de programmation C ESI 2021-2022


Utilisation
 Exemple :

 Tableau de structure

29 Langage de programmation C ESI 2021-2022


Utilisation
 Exemple :

 Tableau de structure

30 Langage de programmation C ESI 2021-2022


Utilisation
 Exemple :

 Pointeur de structure

31 Langage de programmation C ESI 2021-2022


Utilisation
 Exemple :

 Pointeur de structure

32 Langage de programmation C ESI 2021-2022


Énumérations
Définition
 Énumération

 Type créé par l’utilisateur, selon ses besoins, pour définir


les valeurs qu’une variable peut prendre en les énumérant

 Permet d'exprimer des valeurs constantes de type entier


en les associant à des noms

34 Langage de programmation C ESI 2021-2022


Définition
 Syntaxe de la définition d’une énumération

enum NomEnumeration
{
Valeur1 , Valeur2 , … , ValeurN
};

35 Langage de programmation C ESI 2021-2022


Utilisation
 Syntaxe de la déclaration d’une variable de type
énumération

enum NomEnumeration nomVariable;

36 Langage de programmation C ESI 2021-2022


Utilisation
 Syntaxe de la déclaration d’une variable de type
énumération

enum NomEnumeration nomVariable;

Taille réservée pour la variable ?

37 Langage de programmation C ESI 2021-2022


Utilisation
 Exemple

38 Langage de programmation C ESI 2021-2022


Utilisation
 Exemple
 Excellent = 0
 Bien = 1

 Moyen = 2
 Faible = 3

39 Langage de programmation C ESI 2021-2022


Utilisation
 Exemple

40 Langage de programmation C ESI 2021-2022


Utilisation
 Exemple
 Excellent = 5
 Bien = 6

 Moyen = 18
 Faible = 0

41 Langage de programmation C ESI 2021-2022


Utilisation
 Exemple

42 Langage de programmation C ESI 2021-2022


Utilisation
 Exemple

43 Langage de programmation C ESI 2021-2022


Unions
Définition
 Union

 Type créé par l’utilisateur, selon ses besoins, pour


regrouper des variables de types quelconques, mais une
seule variable à la fois

45 Langage de programmation C ESI 2021-2022


Définition
 Union

 Type créé par l’utilisateur, selon ses besoins, pour


regrouper des variables de types quelconques, mais une
seule variable à la fois

 Permet d’utiliser un même espace mémoire par des


données de types différents à des moments différents

46 Langage de programmation C ESI 2021-2022


Définition
 Syntaxe de la définition d’une union
union NomUnion
{
type1 nomChamps1 ;
type2 nomChamps2 ;
type3 nomChamps3 ;

typeN nomChampsN ;
};
47 Langage de programmation C ESI 2021-2022
Utilisation
 Syntaxe de la déclaration d’une variable de type union

union NomUnion nomDeLaVariable ;

48 Langage de programmation C ESI 2021-2022


Utilisation
 Syntaxe de la déclaration d’une variable de type union
union NomUnion
{
type1 nomChamps1 ;
type2 nomChamps2 ;
type3 nomChamps3 ;

typeN nomChampsN ;
} nomDeLaVariable ;
49 Langage de programmation C ESI 2021-2022
Utilisation
 Syntaxe de la déclaration d’une variable de type union
union NomUnion
{
type1 nomChamps1 ;
type2 nomChamps2 ;
type3 nomChamps3 ;

typeN nomChampsN ;
} nomDeLaVariable1, nomDeLaVariable2 ;
50 Langage de programmation C ESI 2021-2022
Utilisation
 Syntaxe de la déclaration d’une variable de type union

 Exemple :

union Nombre n ;

51 Langage de programmation C ESI 2021-2022


Utilisation
 Syntaxe de la déclaration d’une variable de type union

 Exemple :

union Nombre n ;

Taille réservée pour la variable ?

52 Langage de programmation C ESI 2021-2022


Utilisation
 Syntaxe de la manipulation d’une variable de type
union

nomDeLaVariable.nomChamps = valeur ;

 Un seul champs à la fois peut contenir une valeur

53 Langage de programmation C ESI 2021-2022


Utilisation
 Exemple

54 Langage de programmation C ESI 2021-2022


Types synonymes
Définition
 Il est possible de définir un type qui a le même nom
qu’un autre type (prédéfini ou défini par l’utilisateur),
en utilisant le mot-clé typedef

 Type synonyme

56 Langage de programmation C ESI 2021-2022


Définition
 Exemple

57 Langage de programmation C ESI 2021-2022


Définition
 Les types synonymes peuvent être utilisés pour
alléger l’écriture du code quand plusieurs types
définis par l’utilisateur sont utilisés

58 Langage de programmation C ESI 2021-2022


Définition
 Exemple

59 Langage de programmation C ESI 2021-2022


Définition
 Exemple

60 Langage de programmation C ESI 2021-2022


Manipulation de fichiers
Définition
 Un fichier est une collection de données qui est
homogène, ordonnée et de taille dynamique

 On distingue entre deux types de fichiers

 Fichiers textes : Suite de caractères formant un ensemble


de lignes de texte

 Fichiers binaires : Suite d’octets

62 Langage de programmation C ESI 2021-2022


Intérêt
 Le langage C offre la possibilité de manipuler des
fichiers afin de

 Importer des informations nécessaires à la bonne


exécution du programme (valeurs de certaines variables
…)

 Exporter les résultats à la fin de l’exécution du


programme

63 Langage de programmation C ESI 2021-2022


Opérations sur un fichier
 Les opérations possibles à effectuer sur un fichier
sont

 Ouverture / Fermeture

 Lecture

 Écriture

 Déplacement à l’intérieur

 Renommage / Suppression
64 Langage de programmation C ESI 2021-2022
Opérations sur un fichier
 Les opérations possibles à effectuer sur un fichier
sont

 La plupart des fonctions nécessaires à la manipulation


de fichiers sont dans la bibliothèque stdio.h

65 Langage de programmation C ESI 2021-2022


Déclaration
 Syntaxe

FILE *nomFichier ;

66 Langage de programmation C ESI 2021-2022


Ouverture
 L’ouverture de fichiers se fait avec la fonction

FILE * fopen(const char*, const char* ) ;

 Le premier argument est le nom du fichier

 Le deuxième argument est le mode d’ouverture

 Le résultat est un pointeur sur FILE qui sera utilisé par les
opérations sur le fichier ouvert

 NULL si erreur

67 Langage de programmation C ESI 2021-2022


Ouverture
 Modes d’ouverture possibles

 r : ouverture en lecture seule. Si le fichier n’existe pas, il


n’est pas créé

 w : ouverture en écriture. Si le fichier n’existe pas, il est


créé. S’il existe déjà, il est écrasé

 a : ouverture en ajout. Si le fichier n’existe pas, il est créé.


S’il existe déjà, les éléments sont ajoutés à sa fin

68 Langage de programmation C ESI 2021-2022


Ouverture
 Modes d’ouverture possibles

 r+ : ouverture en lecture et écriture. Si le fichier n’existe


pas, il n’est pas créé

 w+ : ouverture en lecture et écriture. Si le fichier n’existe


pas, il est créé. S’il existe déjà, il est écrasé

 a+ : ouverture en ajout et lecture. Si le fichier n’existe pas,


il est créé. S’il existe déjà, les éléments sont ajoutés à sa
fin
69 Langage de programmation C ESI 2021-2022
Ouverture
 Modes d’ouverture possibles

 En plus, il est possible d’ajouter les modes

 b : mode binaire

 t : mode texte

 Exemple : rb, w+t …

70 Langage de programmation C ESI 2021-2022


Ouverture
 Exemple

71 Langage de programmation C ESI 2021-2022


Fermeture
 Il est important de fermer tous les fichiers qui ont
été ouverts par le programme après leur utilisation

 La fermeture d’un fichier se fait avec la fonction

int fclose(FILE* ) ;

 La fonction prend comme argument un pointeur sur FILE


(correspondant au fichier ouvert qui doit être fermé)

 La fonction retourne un entier (0 si OK)


72 Langage de programmation C ESI 2021-2022
Fermeture
 Exemple

73 Langage de programmation C ESI 2021-2022


Lecture
 La lecture d’un fichier peut se faire

 Par caractère

 Par ligne

 Par données formatées

 Par enregistrement

 Pour lire des objets structurés dans un fichier

74 Langage de programmation C ESI 2021-2022


Lecture
 La lecture d’un caractère se fait par la fonction

int fgetc(FILE *) ;

 Elle retourne la valeur du caractère lu

75 Langage de programmation C ESI 2021-2022


Lecture
 Exemple

76 Langage de programmation C ESI 2021-2022


Lecture
 La lecture d’une ligne se fait par la fonction

char* fgets(char*, int, FILE *) ;

 Elle prend comme arguments

 L’adresse de la zone de stockage des caractères en mémoire

 Le nombre maximum de caractères (taille de la zone de


stockage)

 Le pointeur vers le fichier ouvert

77 Langage de programmation C ESI 2021-2022


Lecture

78 Langage de programmation C ESI 2021-2022


Lecture
 La lecture de données formatées se fait par la
fonction
char* fscanf(FILE *, const char *) ;

 Elle prend comme arguments

 Le pointeur vers le fichier ouvert

 Les données formatées à lire

79 Langage de programmation C ESI 2021-2022


Lecture

80 Langage de programmation C ESI 2021-2022


Écriture
 L’écriture d’un fichier peut se faire

 Par caractère

 Par ligne

 Par données formatées

 Par enregistrement

 Pour écrire des objets structurés dans un fichier

81 Langage de programmation C ESI 2021-2022


Écriture
 L’écriture d’un caractère se fait par la fonction

int fputc(int, FILE *) ;

82 Langage de programmation C ESI 2021-2022


Écriture

int fputc(int, FILE *) ;

83 Langage de programmation C ESI 2021-2022


Écriture
 L’écriture par ligne se fait par la fonction

int fputs(const char*, FILE *) ;

 Elle prend comme arguments

 La chaîne de caractères à écrire

 Le pointeur vers le fichier ouvert

 Elle retourne une valeur positive si l’écriture s’est bien


passée

84 Langage de programmation C ESI 2021-2022


Écriture

85 Langage de programmation C ESI 2021-2022


Écriture
 L’écriture de données formatées se fait par la
fonction
int fprintf(FILE *, const char*, …) ;

 Elle prend comme arguments

 Le pointeur vers le fichier ouvert

 Les données formatées à écrire

 Elle retourne le nombre de caractères écrits

86 Langage de programmation C ESI 2021-2022


Écriture

87 Langage de programmation C ESI 2021-2022


Déplacement
 La récupération de la position courante du curseur
dans le fichier se fait par la fonction

long ftell(FILE *) ;

 Elle prend comme argument le pointeur vers le fichier


ouvert

 Elle retourne la position courante du curseur

88 Langage de programmation C ESI 2021-2022


Déplacement
 Le positionnement du curseur dans un endroit précis
dans le fichier se fait par la fonction

int fseek(FILE *, long, int) ;

 Elle prend comme arguments

 Le pointeur vers le fichier ouvert

 Le nombre de caractères de déplacement (–  arrière)

 Origine du déplacement

89 Langage de programmation C ESI 2021-2022


Déplacement
 Le positionnement du curseur dans un endroit précis
dans le fichier se fait par la fonction

int fseek(FILE *, long, int) ;

 Elle prend comme arguments

 Elle retourne 0 en cas de succès

90 Langage de programmation C ESI 2021-2022


Déplacement
 Le positionnement du curseur dans un endroit précis
dans le fichier se fait par la fonction

int fseek(FILE *, long, int) ;

 L’origine de déplacement peut être indiquée par les


constantes
 SEEK_SET : déplacement relatif au début du fichier

 SEEK_CUR : déplacement relatif à la position actuelle du curseur

 SEEK_END : déplacement relatif à la fin du fichier


91 Langage de programmation C ESI 2021-2022
Déplacement

92 Langage de programmation C ESI 2021-2022


Déplacement
 Le repositionnement du curseur au début du fichier
se fait par la fonction

void rewind(FILE *) ;

 Elle prend comme argument le pointeur vers le fichier


ouvert

93 Langage de programmation C ESI 2021-2022


Déplacement

94 Langage de programmation C ESI 2021-2022


Renommage
 Il est possible de renommer un fichier en utilisant la
fonction

int rename(const char *, const char*) ;

 Elle prend comme arguments

 Le nom actuel du fichier à renommer

 Le nouveau nom à donner au fichier

95 Langage de programmation C ESI 2021-2022


Renommage
 Il est possible de renommer un fichier en utilisant la
fonction

int rename(const char *, const char*) ;

 Elle prend comme arguments

 Elle retourne un entier (0 si OK)

96 Langage de programmation C ESI 2021-2022


Renommage
 Il est possible de renommer un fichier en utilisant la
fonction

97 Langage de programmation C ESI 2021-2022


Suppression
 Il est possible de supprimer un fichier en utilisant la
fonction

int remove(const char *) ;

 Elle prend comme argument le nom du fichier à


supprimer

 Elle retourne un entier (0 si OK)

98 Langage de programmation C ESI 2021-2022


Suppression
 Il est possible de supprimer un fichier en utilisant la
fonction

int remove(const char *) ;

 Elle prend comme argument le nom du fichier à


supprimer

 Elle retourne un entier (0 si OK)


Attention! Le fichier est supprimé définitivement sans
demande de confirmation!
99 Langage de programmation C ESI 2021-2022
Suppression
 Il est possible de supprimer un fichier en utilisant la
fonction

100 Langage de programmation C ESI 2021-2022


Langage de programmation C

6. Notions connexes

You might also like