Les structures
Une structure est comme un tableau, qui sera constitué d'un certains nombre d'objets mais qui ne seront pas forcément du même type.
Exemple de syntaxe
Code:
struct objet { char tab[50]; int taille; } objet;
Création d'une structure
Les structures sont soit créées dans le fichier.c et en dehors de la fonction principale main, soit et là on préférera toujours, écrire notre structure dans le fichier.h, c'est à dire le fichier d'en-tête du fichier.c
On le placera dans notre cas toujours dans le fichier d'en-tête...
Imaginons que nous ayons créé un fichier program.c et son fichier d'en-tête program.h, voici à quoi ressemblera program.h
program.h
Code:
#ifndef PROGRAM_H_INCLUDED #define PROGRAM_H_INCLUDED struct objet /* création d'une structure */ { char tab[50]; int taille; } objet; #endif
Code:
#include <stdio.h> #include "program.h" /* ne pas oublier */ int main(void) { /* code */ return 0; }
C'est assez simple, dans program.c vous déclarez en plaçant le mot clé struct devant le nom de la structure
Code:
struct objet o; /* déclaration de la structure objet nommée o */
Il y a deux possibilité, soit vous avez déclaré
- une structure
- une adresse de structure
On ne verra pour ce cours que le cas où l'on déclare une structure...
Pour une structure simple, on utilisera le point '.' pour accéder à notre champ.
Pour le champ taille de ma structure objet, on fera de cette façon
Code:
#include <stdio.h> #include <string.h> /* Pour strlen */ #include "program.h" /* Pour ma structure objet */ int main(void) { const char *chaine = "Bonjour"; int t = strlen(chaine); /* longueur de la chaîne "Bonjour" */ struct objet o; /* déclaration de ma structure objet nommée o */ o.taille = t; /* enregistrement de la valeur de la variable t dans le champ taille de ma structure objet */ printf("%d caractères\n", o.taille); /* 7 caractères */ return 0; }
Code:
#include <stdio.h> #include <string.h> #include "program.h" int main(void) { const char *chaine = "Bonjour"; int t = strlen(chaine); /* longueur de la chaîne "Bonjour" */ struct objet o; /* déclaration de ma structure objet nommée o */ strcpy(o.tab, chaine); /* copie du contenu de la variable chaine dans le champ tab de la structure objet */ o.taille = t; printf("%s a %d caractères\n", o.tab, o.taille); /* Bonjour a 7 caractères */ return 0; }
Interdit
Il est totalement interdit d'enregistrer une chaîne de caractères dans un champ de structure de cette façon
Code:
o.tab = chaine; /* plantage du programme */
Exercice n°1
Il est l'heure pour vous d'aller faire vos achats pour le repas de midi dans votre supermarché préféré. Pour cela vous allez
- créer deux fichiers supermarche.c et supermarche.h
- créer une structure article dont les champs seront les suivants: const char nom[20], double prix, int quantite dans le fichier d'en-tête de votre programme.
- créer une fonction nommée afficher, prenant en paramètre une structure article dont le prototype est ci-dessous
Code:
void afficher(struct article art);
nom: poireaux
prix: 1,49 euros
quantité: 3
- créer plusieurs articles (3 minimum) dans un tableau de structures (écris directement dans le programme sans demande à l'utilisateur)
Code:
struct article mesArticles[3]; /* déclaration d'un tableau d'articles /*
- afficher à l'aide d'une boucle for, tous les articles que vous avez acheté à l'aide de la fonction afficher
Exercice n°2
- Définir une structure de livre contenant :
– un titre
– un auteur
– une année de parution - Créer et initialiser deux variables correspondant à deux livres différents
- Afficher les informations des deux livres
- Modifier la date de parution du deuxième livre
- Afficher les informations du deuxième livre
Merci de m'avoir lu et à bientôt pour le prochain cours
Commentaire