/* fichier rechPoint.c */
#include"rechPoint.h"extern FILE* leFichier; /* leFichier est globale à tout le programme, statique, pas d'espace réservé */ int rechercher(point pRech) /* pRech est locale à rechercher, automatique donc espace alloué sur la pile */ { static int nbAppel = 0; /* nbAppel est locale au bloc, statique donc espace réservé en zone de données */ int fin; /* fin est locale au bloc, automatique donc espace réservé sur la pile */ int retour = 0; /* retour est locale au bloc, automatique donc espace réservé sur la pile */ point p; /* p est locale au bloc, automatique donc espace réservé sur la pile */ nbAppel++; printf("La fonction a été appelée %d fois", nbAppel); fin = fscanf(leFichier, "(%d,%d)\n", &p.x,&p.y); while (fin != EOF && retour = = 0) { if (pRech.x == p.x && pRech.y == p.y) retour = 1; else fin = fscanf(leFichier,"(%d,%d)\n", &p.x,&p.y); } return (retour); } |
/* fichier principal.c */
#include"rechPoint.h"FILE* leFichier; /* leFichier est globale à tout le programme, statique, espace réservé dans la zone des données */ static point lePoint; /* lePoint est globale au fichier principal.c, statique, espace réservé en zone des données*/ void afficher(int r) /* r est locale à afficher, automatique, espace alloué sur la pile */ { if (r) printf("\nLe point (%d,%d) a été trouvé ...", lePoint.x, lePoint.y); else printf("\nLe point (%d,%d) n a pas été trouvé ...", lePoint.x, lePoint.y); } int main(void) { char nomFichier[40]; /* nomFichier est locale au bloc du main, automatique donc espace alloué sur la pile */ printf("Donner le nom du fichier"); gets(nomFichier); leFichier = fopen(nomFichier, "rt"); if (leFichier = = NULL) printf ("Erreur ..."); else { printf("Donner les coordonnées (x,y) du point à rechercher"); scanf("(%d,%d)", &(lePoint.x), &(lePoint.y)); afficher(rechercher(lePoint)); } fclose(leFichier); /* ferme le fichier */ } |