| |
Programmation C |
|
Lecture des données
formatées :
Après avoir stocké avec succès nos contacts, tentons de les lire.
La lecture des données est possible par l'instruction suivante :
fread(<VAR>, <taille>, <nombre>, <pointeur fichier>);
-
<VAR> : Données à
lire. Dans le cas présent, il s'agit d'un tableau dont les éléments sont
structurés selon la structure
CONTACT
-
<taille> : Taille
d'un élément en octets. Dans le cas présent, il s'agit de la taille d'un
élément du tableau. La fonction
sizeof();
permet de nous calculer l'occupation mémoire à notre place.
-
<nombre> : Nombre
d'éléments à lire dans le fichier. Dans le cas présent, on veut lire la
totalité des éléments du tableau dans le fichier. Mais vous pouvez aussi bien
ne lire qu'un nombre limité d'éléments. par exemple, le premier uniquement,
mettez la valeur numérique 1
-
<pointeur fichier> :
Il s'agit du fichier dans lequel la fonction
fread();
doit lire ses données, désigné par le pointeur fichier. voir le chapitre
précédent pour plus de précisions à propos du pointeur fichier.
Il s'agit de la seule nouveauté
dans ce programme, toutes les autres instructions C sont décrites dans les
chapitres précédents.
Voici le programme7.exe :
#include <stdio.h>
#include <system.h> // pour getche();
main()
{
//+------------------------------+
//| Déclaration de la structure |
//| CONTACT |
//+------------------------------+
struct CONTACT
{
char nom[20];
char prenom[20];
char adresse[20];
char telephone[15];
char fax[15];
} TabContacts[50];
//+------------------------------+
//| Déclarations de variables |
//+------------------------------+
FILE *fp;
int c,i,p,r;
c = 49;
i = 0;
p = 0;
r = 0;
//+------------------------------+
//| Recuperation des données |
//+------------------------------+
fp = fopen("DATA.DAT","r");
fread(TabContacts, sizeof(struct CONTACT), 50, fp);
fclose(fp);
while(i<=4 && c==49)
{
r = p + i;
//+------------------------------+
//| Affichage des données |
//+------------------------------+
if(i==0)
{
printf("\n+-------------------------------------------------------------------+");
printf("\n| Affichage de la liste de vos contacts PAGE : %i/10 |",((p/5)+1));
printf("\n+-------------------------------------------------------------------+");
}
printf("\n\n ***** CONTACT : %i *****",(r+1));
printf("\nNOM : \t\t");
printf("%s",TabContacts[r].nom);
printf("\nPRENOM : \t");
printf("%s",TabContacts[r].prenom);
printf("\nADRESSE : \t");
printf("%s",TabContacts[r].adresse);
printf("\nTELEPHONE : \t");
printf("%s",TabContacts[r].telephone);
printf("\nFAX : \t\t");
printf("%s",TabContacts[r].fax);
//+------------------------------+
//| Pagination |
//+------------------------------+
if(i==4 && p<=40)
{
printf("\n\nAppuyez sur 1 pour passer a la page suivante");
printf("\nAppuyez sur n'importe quelle autre touche pour quitter");
printf("\nVotre choix : \t");
p = p + 5;
i=0;
c = getche();
}
else
{
i++;
}
if(i==5 && p==45)
{
printf("\n\nVous etes arrive en fin de liste.");
break;
}
}
printf("\n > Appuyez sur une touche pour fermer l'application");
getche();
}
|
Voici un exemple de déroulement de
ce programme (suite des inscriptions effectuées précédemment) :

Nous voyons
effectivement les deux inscriptions effectuées précédemment. En raison de la
limitation à 50 contacts, nous ne pouvons proposer plus de 10 pages, ayant
chacune d'elle 5 contacts. Il suffit d'appuyer sur la touche 1 pour passer à la
page suivante. Notez que l'on se repère grâce à la numérotation des pages (1/10;
2/10, etc.). Il existe en réalité 2 contacts sur les 50 : au lieu d'afficher des
formulaires vides en données, il serait préférable de n'afficher que les
contacts existants !
ATTENTION :
Lors de l'ajout d'un contact via le formulaire prévu à cet effet
(programme6.exe), vous ne pouvez pas entrer d'espaces dans les champs, ce
caractère étant considéré comme <ENTREE>.
Tous les problèmes rencontrés jusqu'a présent vont être résolus dans la seconde
version de ce programme.
|