1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
| #include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SZ_NOM (15)
#define SZ_PRENOM (15)
#define SZ_TEL (10)
// Structure pour le nom,prenom et télephone
typedef struct {
char nom[SZ_NOM + 1];
char prenom[SZ_PRENOM + 1];
char tel[SZ_TEL + 1];
} t_personne;
// Fonction permettant de saisir une chaine en enlevant le '\n'
void myGets(char *prompt, char *chaine, unsigned short size)
{
char *pt;
fputs(prompt, stdout);
fgets(chaine, size, stdin);
if ((pt=strchr(chaine, '\n')) != NULL)
*pt='\0';
}
// Menu
unsigned short menu()
{
char saisie[100];
unsigned short choix;
while(1)
{
printf("------- Repertoire 2013-------\n");
printf("1 : ouvre un fichier annuaire\n");
printf("2 : Ajouter une fiche \n");
printf("3 : Liste des noms \n");
printf("0 : Quitter");
printf("\nVotre choix ?");
fflush(stdout);
fgets(saisie, 100, stdin);
if (sscanf(saisie, "%hu", &choix) == 1 && choix >= 0 && choix <= 3) break;
printf("Choix incorrect - Recommencez !!!\n");
}
return choix;
}
FILE *ouvrir_fichier()
{
char nom[100];
char *pt;
printf("**Ouverture du fichier**\n\n");
myGets("Saisir un nom pour le fichier: ", nom, 100);
// Vérification extension ".txt" n'existe pas
if ((pt=strrchr(nom, '.')) == NULL || strcmp(pt, ".txt") != 0)
strcat(nom,".txt");// on rajoute l'extension .txt au fichier
return fopen(nom, "a+");
}
void ajouterNom(FILE *fp)
{
t_personne p;
printf("Ajouter nom\n");
myGets("Entrer le nom :", p.nom, SZ_NOM);
myGets("Entrer le prénom :", p.prenom, SZ_PRENOM);
myGets("Entrer le tel :", p.tel, SZ_TEL);
fprintf(fp, "%s:%s:%s\n", p.nom, p.prenom, p.tel);
fflush(fp);
printf("enregistrement %s:%s:%s ok\n", p.nom, p.prenom, p.tel);
}
void listerNom(FILE *fp)
{
t_personne p;
long pos;
char ligne[100];
// Récupération position courante
pos=ftell(fp);
// Positionnement au début du fichier
fseek(fp, 0L, SEEK_SET);
// Lecture fichier
while (fgets(ligne, 100, fp) != NULL)
{
printf(ligne);
}
// Repositionnement à la position initiale du fichier
fseek(fp, pos, SEEK_SET);
}
int main()
{
FILE *fp=NULL;
unsigned short choix;
while((choix=menu()) != 0)
{
switch (choix)
{
case 1:
fp=ouvrir_fichier();
if (fp == NULL)
fprintf(stderr, "Erreur ouverture fichier\n");
break;
case 2:
if (fp == NULL)
{
fprintf(stderr, "Il faut d'abord ouvrir le fichier\n");
break;
}
ajouterNom(fp);
break;
case 3:
if (fp == NULL)
{
fprintf(stderr, "Il faut d'abord ouvrir le fichier\n");
break;
}
listerNom(fp);
break;
case 0:
if (fp != NULL) fclose(fp);
}
}
return 0;
} |
Partager