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 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178
|
void partie1Saisie() // Appel de la saisie partie 1
{
system("cls"); // On éfface l'écran
// On présente ici l'exercice
printf("________________________________________________\n"
"Partie 1 - Fichier sequentiel :\n"
"------------------------------------------------\n"
"Saisir et enregistrer\n"
"------------------------------------------------\n\n");
// Déclaration & Initialisation des variables
annuaire UnAnnuaire = {"", "", 0, 0}; // On initialise l'instanciation de struct annuaire
char ajoutContact = NULL;
char initAnnuaire = NULL;
int lignesFichier = 0; // Compteur lignes du fichier
// DEBUT
printf("Souhaitez vous initialiser l'annuaire ? -> [i]\nAppuyer sur une touche pour continuer..\n\n Votre choix : ");
fflush(stdin); // On vide le flux
scanf("%c", &initAnnuaire);
if (initAnnuaire == 'i')
{
/* On compte le nombre de lignes total que contient le fichier,
on ferme et on réouvre pour saisir les chaines */
f = fopen("fichiers\\annuaire.txt", "w+"); // Ouverture et initialisation
lignesFichier = nb_lignes (f); // Compte le nombre de lignes du fichier
fclose(f); // On ferme
f = fopen("fichiers\\annuaire.txt", "w+"); // Ouverture en écriture + initialisation
// Le pointeur "f" devient alors un pointeur sur "annuaire.txt"
printf("\n ** Annuaire initialise **\n\n"
"Contacts (%d)\n", lignesFichier);
}
else
{
/* On compte le nombre de lignes total que contient le fichier,
on ferme et on réouvre pour saisir les chaines */
f = fopen("fichiers\\annuaire.txt", "r"); // Ouverture en mode lecture "read"
lignesFichier = nb_lignes (f); // Compte le nombre de lignes du fichier
fclose(f); // On ferme
f = fopen("fichiers\\annuaire.txt", "a"); // Ouverture en écriture ajout (append)
printf("\n ** Ouverture de l'annuaire en mode append (ajout) **\n\n"
" Contacts (%d)\n", lignesFichier);
}
printf("------------------------------------------------\n\n");
if (f != NULL) // On verifie bien que le fichier a été crée
{
nouveauContact_P1(lignesFichier);
printf("\n\nAjouter un contact a l'annuaire -> [a]\nAppuyer sur une touche pour continuer..\n\n Votre choix : ");
fflush(stdin); // On vide le flux
scanf("%c", &ajoutContact);
printf("------------------------------------------------\n\n");
while (ajoutContact == 'a')
{
lignesFichier++; // On ajoute 1 au compteur de lignes
nouveauContact_P1(lignesFichier);
printf("\n\nAjouter un contact a l'annuaire -> [a]\nAppuyer sur une touche pour continuer..\n\n Votre choix : ");
fflush(stdin); // On vide le flux
scanf("%c", &ajoutContact);
printf("------------------------------------------------\n\n");
}
fclose(f); // Fermeture du fichier
}
else
{
printf("Impossible d'ouvrir le fichier");
}
// FIN
}
void partie1Lire() // Appel de la lecture partie 1
{
system("cls"); // On éfface l'écran
// On présente ici l'exercice
printf("________________________________________________\n"
"Partie 1 - Fichier sequentiel :\n"
"------------------------------------------------\n"
"Lecture du fichier\n"
"------------------------------------------------\n\n");
// Déclaration & Initialisation des variables
annuaire UnAnnuaire;
#define TAILLE_MAX 50 // On définit la taille max de la chaine de caractère
char *pointeur = NULL;
char *separateur = { ";;" }; // Definition du séparateur
char *buffer = NULL;
int i=1;
int lignesFichier = 0; // Compteur lignes du fichier
char chaine[TAILLE_MAX] = ""; // Tableau pour recevoir la chaine complete du fichier
char *Chaine_Entrante=("%s",chaine); // On copie la chaine de caractère pour la traité
// Tableaux pour recevoir la valeur de chaques elements de la chaine complete
char nom[21];
char numeroTel[16];
char age[4];
char numeroC[5]; // recupere le numero du contact
// DEBUT
/* On compte le nombre de lignes total que contient le fichier,
on ferme et on réouvre au debut pour traiter les chaines */
f = fopen("fichiers\\annuaire.txt", "r"); // Ouverture en mode lecture "read"
lignesFichier = nb_lignes (f); // Compte le nombre de lignes du fichier
fclose(f); // On ferme
f = fopen("fichiers\\annuaire.txt", "r"); // On réouvre en read
if (f != NULL)
{
printf(" ** Annuaire **\n"
"------------------------------------------------\n"
"_____Contacts : %d\n\n"
"_Nom :\t\t\tAge :\tNumero de telephone :\tNumero du contact :\n\n", lignesFichier);
while (fgets(chaine, TAILLE_MAX, f) != NULL) // On lit le fichier tant qu'on ne reçoit pas d'erreur (NULL)
{
buffer = strdup ( Chaine_Entrante ); // Duplique la chaine de caractère
// Premier appel
pointeur = strtok( buffer, separateur ); // Coupe la chaine de caractère au niveau du séparateur
strcpy(nom, pointeur); // Copie le dans le tableau nom
while( pointeur != NULL )
{
// Cherche les autres separateur
pointeur = strtok( NULL, separateur ); // On coupe la chaine de caractère tant qu'on ne reçoit pas d'erreur (NULL)
if ( pointeur != NULL )
{
i++;
if ( i == 2 )
{
strcpy(age, pointeur); // Copie l'age dans le tableau age
}
if ( i == 3 )
{
strcpy(numeroTel, pointeur); // Copie le numero de tel. dans le tableau numeroTel
}
if ( i == 4 )
{
strcpy(numeroC, pointeur); // Copie le numero du contact dans le tableau numeroC
// On gere l'affichage correctement en fonction de la longueur du nom
if (strlen(nom) < 8)
{
printf("%s\t\t\t%s\t%s\t\t-> %s", nom, age, numeroTel, numeroC); // On affiche la chaine du contact
}
else if ((strlen(nom) >= 8) && (strlen(nom) < 16))
{
printf("%s\t\t%s\t%s\t\t-> %s", nom, age, numeroTel, numeroC);
}
else
{
printf("%s\t%s\t%s\t\t-> %s", nom, age, numeroTel, numeroC);
}
i = 1; // On réinitialise i à 1 (car 4 elements dans une chaine de caractères)
}
}
}
}
fclose(f);
}
else
{
printf("Impossible d'ouvrir le fichier");
}
// FIN
} |
Partager