Vous êtes sur la page 1sur 4

#include <stdio.

h>
#include<string.h>

typedef struct {
char nom[30] ; // Nom d’utilisateur
char mdp[10] ; // Mot de passe
} Utilisateur ;

int SearchUser(FILE *f,char nom[]){


Utilisateur us;
int i=0;
while(fread(&us,sizeof(Utilisateur),1,f)!=0)
{
i++;
if (strcmp(us.nom,nom)==0) {
return i;
}

}
return -1;
}
void AddUser(FILE *f){
Utilisateur us;
printf("Username: ");
scanf("%s",us.nom);
rewind(f);
if (SearchUser(f,us.nom)!=-1) {
printf("Le nom d'utilistateur existe déjà !!! \n");
}
else{
printf("Password: ");
scanf("%s",us.mdp);
fwrite(&us,sizeof(Utilisateur),1,f);
}
}

void PrintUsers(FILE *f){


Utilisateur us;

while(fread(&us,sizeof(Utilisateur),1,f)!=0)
{
printf("\n\n\nUsername: %s \n",us.nom);
printf("Password: %s \n",us.mdp);
}

void EditPass(FILE *f,char nom[]){


Utilisateur us;
char pass[10];
while(fread(&us,sizeof(Utilisateur),1,f)!=0)
{
if (strcmp(us.nom,nom)==0) {
printf("Entrer le nouveau mot de passe :");
scanf("%s",pass);
strcpy(us.mdp,pass);
//printf("position =%d \n",ftell(f));
fseek(f, -sizeof(Utilisateur), SEEK_CUR);
fwrite(&us,sizeof(Utilisateur),1,f);
return;
}
}

printf("nom inexistant ! \n");


}

void SortUsers(FILE *f,FILE *fb){


int i=0,j,k;
Utilisateur UT[50];
Utilisateur us,tmp;
while(fread(&us,sizeof(Utilisateur),1,f)!=0)
{
UT[i++]=us;
}

for (j=1; j<i; j++) {


for (k=0; k<j; k++) {
if(strcmp(UT[j].nom,UT[k].nom )<0){

tmp=UT[j];
UT[j]=UT[k];
UT[k]=tmp;
}
}
}
fwrite(UT, sizeof(Utilisateur), i, fb);
}
int main(int argc, const char * argv[]) {

FILE *f,*fb;
char nom[50],nom2[50];
f=fopen("tp10.bin", "r+b");
if(f==NULL){
printf("erreur d'ouverture \n");
exit(1);

}
else printf("fichier ouvert avec success \n");

fb=fopen("tp10b.bin", "w+b");
if(fb==NULL){
printf("erreur d'ouverture \n");
exit(1);

}
else printf("fichier ouvert avec success \n");

AddUser(f);

rewind(f);
PrintUsers(f);

rewind(f);
printf("Entrer le nom de l'utilisateur recherché: ");
scanf("%s",nom);
printf("SearchUser = %d \n\n",SearchUser(f,nom));

rewind(f);
printf("Entrer le nom de l'utilisateur pour changer le mot
de passe: ");
scanf("%s",nom2);
EditPass(f,nom2);

printf("\n\n ************** file : f **************\n\n");


rewind(f);
PrintUsers(f);

rewind(fb);
rewind(f);
SortUsers(f,fb);
rewind(fb);
printf("\n\n ************** file : fb **************\n\n");
PrintUsers(fb);
return 0;
}

Vous aimerez peut-être aussi