didy_gwatinik
Messages postés352Date d'inscriptionsamedi 17 novembre 2007StatutMembreDernière intervention30 mars 2010
-
2 avril 2008 à 13:23
Christounet
Messages postés1264Date d'inscriptionmercredi 26 septembre 2007StatutMembreDernière intervention29 juillet 2010
-
2 avril 2008 à 14:31
Bonjour,
Je suis sur un projet répertoire donc l'utilisateur fait la saisie des informations... puis à la fermeture du fichier j'enregistre le contenu des variables dans un fichier, en premier on a le nombre de contact, puis les informations des contacts. Mon problème arrive ici : lors de la réouverture du programme je tente de mettre ce qu'il a dans le fichier dans les variables appropriées mais ça ne marche, le nombre de contact est nul alors que dans le fichier la première ligne affiche bien 3. Je vous poste mon code si quelqu'un peut m'aider. Je pense qu'il doit y a avoir un problème au niveau de la fonction atoi() mais je n'arrive pas à le régler. Je débute en C mon code n'est surement pas des plus optimisés. Donc les remarques sont les bienvenues. Je suis sur DEV C++. Merci d'avance...
C'est un peu long :s
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
#define N 10
#define taille 52
#define chemin "C:\\repertoire.txt"
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//Déclaration de la structure carnet
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
struct carnet
{
char nom[20];
char prenom[20];
char numTel[11];
char mel[50];
char motdepasse[9];
}tab[N];
//++++++++++++++++++++++++++++++++
//Procedure Presentation
//++++++++++++++++++++++++++++
void presentation()
{
printf("\n\n\n\n\n\n");
puts(" *****************************************************");
puts(" * *");
puts(" * CARNET D'ADRESSE *");
puts(" * *");
puts(" *****************************************************");
printf("\n\n\n\n\n\n");
system("pause");
system("cls");
}
//++++++++++++++++++++++++
//Procedure NomPresent
//+++++++++++++++++++++++
void nomPresent(int *nbContact)
{
int i=0;
puts("Voici les contacts presents dans votre repertoire");
for(i=0;i<*nbContact;i++)
{
printf("%s\n", tab[i].nom);
}
}
//++++++++++++++++++++++++++
//Procedure decryptageFichier
//+++++++++++++++++++++++++
void decryptageFichier(int *nbContact)
{
int i=0;
char nomSaisi[20],motdepasse[9];
system("cls");
nomPresent(nbContact);
puts("De quelle personne voulez vous decrypter l'acces aux coordonnes ?");
scanf("%s", &nomSaisi);
for(i=0;i<*nbContact;i++)
{
if(strcmp(nomSaisi,tab[i].nom)==0)
break;
}
if(strlen(tab[i].motdepasse)>1)
{
printf("Mot de passe : ");
scanf("%s",&motdepasse);
if(strcmp(motdepasse,tab[i].motdepasse)==0)
printf("L'acces aux coordonnees a ete decrypte");
strcpy(tab[i].motdepasse,""); //le mot de passe ne contient plus de caractere
}
else{printf("Il n'y a pas de mot de passe pour cette personne");}
getch();
}
//+++++++++++++++++++++++
//Procedure SuppressionFiche
//+++++++++++++++++++++++
void suppressionFiche(int *nbContact)
{
int i=0,reponse=0;
char nomSaisi[20];
system("cls");
nomPresent(nbContact);
puts("De quelle personne voulez-vous supprimer la fiche?");
scanf("%s", &nomSaisi);
for(i=0;i<*nbContact;i++)
{
if(strcmp(nomSaisi,tab[i].nom)==0)
break;
}
printf("Validez la suppression des coordonnées de %s %s en tapant sur 1\n", tab[i].nom, tab[i].prenom);
scanf("%d", &reponse);
if(reponse==1)
{
//copie du contenu de la derniere fiche a la place de celle a supprimer
strcpy(tab[i].nom,tab[*nbContact].nom);
strcpy(tab[i].prenom,tab[*nbContact].prenom);
strcpy(tab[i].numTel,tab[*nbContact].numTel);
strcpy(tab[i].mel,tab[*nbContact].mel);
//on enleve un contact
*nbContact--;
printf("Les donnees ont ete supprimees");
}
getch();
}
//+++++++++++++++++++++++++
//Fonction Verification adresse mail
//+++++++++++++++++++++++++++
int verifMel(char *mel)
{
int i=0,correct=0;
for(i=0;i<(strlen(mel));i++)
{
if(mel[i]=='@')
{
if(mel[(strlen(mel)-3)]=='.')//accès au 3eme caractere en partant de la fin de l'adresse mail
{
correct=1;
}
}
}
return correct;
}
//++++++++++++++++++++++++++++
//Fonction Creation Fiche
//++++++++++++++++++++++++++++
void creationFiche(int *nbContact)
{
int static i=0, correct=0;
system("cls");
puts("Creation Fiche Contact");
puts("Nom : ");
scanf("%s", &tab[i].nom);
puts("Prenom : ");
scanf("%s", &tab[i].prenom);
do
{
puts("Numero de telephone : ");
scanf("%s", &tab[i].numTel);
}while(strlen(tab[i].numTel)!=10); //test si le nombre de chiffre saisie est de 10 à l'aide de la longueur de la chaine
do
{
puts("Adresse mail : ");
scanf("%s", &tab[i].mel);
correct=verifMel(tab[i].mel);
}while(correct!=1);
*tab[i].motdepasse=1;
printf("Les informations concernant %s %s ont ete enregistrees", tab[i].nom, tab[i].prenom);
i=i+1;
*nbContact=i;
getch();
}
//++++++++++++++++++++++++++++++++++++++++++
//Procedure Consultation Fiche
//++++++++++++++++++++++++++++++++++++++
void consulterFiche(int *nbContact)
{
int i=0,ecriture=0;
char choix[20],motdepasse[9];
system("cls");
nomPresent(nbContact);
puts("Veuillez saisir le nom de la personne dont vous souhaitez lire la fiche");
scanf("%s", &choix);
for(i=0;i<*nbContact;i++)
{
if(strcmp(tab[i].nom,choix)==0)
{
if(strlen(tab[i].motdepasse)>1)
{
printf("Mot de passe : ");
fflush(stdin);
gets(motdepasse);
if(strcmp(motdepasse,tab[i].motdepasse)==0)
{
printf("%s\n%s\n%s\n%s\n", tab[i].nom, tab[i].prenom, tab[i].numTel, tab[i].mel);
ecriture=1;
}
}
else{
printf("%s\n%s\n%s\n%s\n", tab[i].nom, tab[i].prenom, tab[i].numTel, tab[i].mel);
ecriture=1;
}
}
}
if(ecriture!=1)
puts("Erreur de saisie");
getch();
}
//++++++++++++++++++++++
//Procedure cryptageFiche
//++++++++++++++++++++++++
void cryptageFiche(int *nbContact)
{
int i=0;
char motdepasse1[9],nomSaisi[20];
system("cls");
nomPresent(nbContact);
puts("De quelle personne voulez vous crypter les coordonnees");
scanf("%s", &nomSaisi);
for(i=0;i<*nbContact;i++)
{
if(strcmp(nomSaisi,tab[i].nom)==0)
break;
}
do
{
puts("Veuillez entrer un mot de passe maximum 8 caracteres");
fflush(stdin);
scanf("%s",&motdepasse1);
puts("Confirmer mot de passe : ");
fflush(stdin);
scanf("%s",&tab[i].motdepasse);
}while(strcmp(motdepasse1,tab[i].motdepasse)!=0);
printf("Le mot de passe est confirme pour l'acces aux coordonnees de %s %s", tab[i].nom, tab[i].prenom);
getch();
}
//+++++++++++++++++++++++++
//Procedure ModificationFiche
//+++++++++++++++++++++++
void modificationFiche(int *nbContact)
{
int i=0,correct=0;
char nomSaisi[20];
system("cls");
nomPresent(nbContact);
puts("De quelle personne souhaitez vous modifier les coordonnees ?");
scanf("%s", &nomSaisi);
//Recherche de l'indice du nom
for(i=0;i<*nbContact;i++)
{
if(strcmp(nomSaisi,tab[i].nom)==0)
break;
}
if(i<*nbContact)//Le nom a été trouvé
{
printf("Veuillez saisir les nouvelles informations concernant %s %s\n", tab[i].nom, tab[i].prenom);
puts("Nom : ");
scanf("%s", &tab[i].nom);
puts("Prenom : ");
scanf("%s", &tab[i].prenom);
do
{
puts("Numero de telephone : ");
scanf("%s", &tab[i].numTel);
}while(strlen(tab[i].numTel)!=10); //test si le nombre de chiffre saisie est de 10 à l'aide de la longueur de la chaine
do
{
puts("Adresse mail : ");
scanf("%s", &tab[i].mel);
correct=verifMel(tab[i].mel);
}while(correct!=1);
printf("Les informations concernant %s %s ont ete modifiees", tab[i].nom, tab[i].prenom);
}
else{printf("Le nom trouve n'apparait pas dans la liste de vos contacts");}
getch();
}
//+++++++++++++++++++++++++++++
//Procedure Suppression
//+++++++++++++++++++++++++++++
void suppressionCarnet(int *nbContact)
{
int reponse=0;
system("cls");
puts("Appuyez sur 1 pour confirmer la supression du carnet");
scanf("%d", &reponse);
if(reponse==1)
{
*nbContact=0;
puts("Les donnees ont ete effacees");
}
getch();
}
//+++++++++++++++++++++++++++++++++++
//Proocedur Enregistrement
//++++++++++++++++++++++++++++++++++++++++++
void enregistrement(int *nbContact)
{
FILE *fichier = NULL;
int i=0;
fichier=fopen(chemin,"w"); //w pour ecraser l'ancien enregistrement
if (fichier != NULL)
{
fprintf(fichier,"%d",*nbContact);
fprintf(fichier,"\n");
for(i=0;i<*nbContact;i++)
{
fprintf(fichier,tab[i].nom);
fprintf(fichier,"\n");
fprintf(fichier,tab[i].prenom);
fprintf(fichier,"\n");
fprintf(fichier,tab[i].numTel);
fprintf(fichier,"\n");
fprintf(fichier,tab[i].mel);
fprintf(fichier,"\n");
fprintf(fichier,tab[i].motdepasse);
fprintf(fichier,"\n");
}
}
fclose(fichier);
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++
//Procedure fichier Variable qui copie le contenu des fichiers dans des variables
//++++++++++++++++++++++++++++++++++++++++++++++++++++
void fichierVariable(int *nbContact)
{
FILE *fichier = NULL; //initialisation du pointeur de fichier
char chaine[taille];
int i=0,j=0;
fichier=fopen(chemin,"r");//lecture seule
if(fichier!=NULL)
{
while(feof(fichier))
{
fflush(stdin);
fgets(chaine,taille,fichier);
*nbContact=atoi(chaine);
for(j=0;j<*nbContact;j++)
{
for(i=0;i<4;i++)//4 car il y a 5 champs ds la structure
{
fflush(stdin);
fgets(chaine,taille,fichier);
strcpy(tab[i].nom,chaine);
fflush(stdin);
fgets(chaine,taille,fichier);
strcpy(tab[i].prenom,chaine);
fflush(stdin);
fgets(chaine,taille,fichier);
strcpy(tab[i].numTel,chaine);
fflush(stdin);
fgets(chaine,taille,fichier);
strcpy(tab[i].mel,chaine);
fflush(stdin);
fgets(chaine,taille,fichier);
strcpy(tab[i].motdepasse,chaine);
}
}
}
}
fclose(fichier);
}
//++++++++++++++++++++++++++
//Procedure Menu
//++++++++++++++++++++++++++
void menu()
{
int choix=0,nbContact=0;
fichierVariable(&nbContact);
do{
system("cls");
puts("Que voulez vous faire?\n\n\t1 : Creer une fiche contact\n\t2 : Consulter une fiche\n\t3 : Ajouter et mettre a jour une fiche\n\t4 : Modifier une fiche\n\t5 : Supprimer une fiche\n\t6 : Supprimer votre carnet d'adresse\n\t7 : Afficher le nombre de vos contacts\n\t8 : Crypter un fichier\n\t9 : Decrypter un fichier\n\t10 : Quitter\n");
scanf("%d", &choix); //on ne teste pas car la condition est testée avec le default du switch
switch(choix)
{
case 1 :
{
creationFiche(&nbContact);
}
break;
case 2 :
{
consulterFiche(&nbContact);
}
break;
case 3 :
{
;
}
break;
case 4 :
{
modificationFiche(&nbContact);
}
break;
case 5 :
{
suppressionFiche(&nbContact);
}
break;
case 6 :
{
suppressionCarnet(&nbContact);
}
break;
case 7 :
{
printf("Il y a %d contacts dans votre repertoire", nbContact);
getch();
}
break;
case 8 :
{
cryptageFiche(&nbContact);
}
break;
case 9 :
{
decryptageFichier(&nbContact);
}
break;
case 10 :
;
break;
default : ;
}
}while(choix!=10);
if(&nbContact>0)
enregistrement(&nbContact);
}
//++++++++++++++++++++++++++
//Programme principal
//++++++++++++++++++++++++++
main(void)
{
presentation();
menu();
getch();
return 0;
}