Un souci pour effacer un enregistrement + question
salut, j'ai une fonction qui permet d'effacer un utilisateur de mon fichier. En realité, il n'est pas supprimé, son etat est mis à "non". Voila le code :
Code:
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
| void suppuser(void)
{
int ok;
int num;
int choix;
FILE *f;
suser user;
system("cls");
printf("Vous avez decide de supprimer un utilisateur du fichier.");
ok=afficheUser();
printf("Entrez l'indice de l'utilisateur a supprimer du fichier :");
scanf("%d",&num);
//si le num tapé n'est pas compris entre 1 et le nbre d'élèves ds le fichier=>erreur
while(num<1 || num>ok)
{
printf("\nNumero inexistant, recommencez svp :");
flushall();
scanf("%d",&num);
}
num--;
f=fopen("fichieruser.txt","r+");
fseek(f,sizeof(user)*(num),SEEK_SET);//on se positionne a l'endroit voulu
fread(&user,sizeof(user),1,f);//lecture du fichier
printf("\n\n\nVous avez choisi de supprimer l'utilisateur %s\n\n",user.nom);
printf("Etes vous sur(e) ?");
printf("\n1: oui 2: non\nVotre choix :")
scanf("%d",&choix);
if(choix==1)
{
//printf("On va zaper l'user !");
strcpy(user.etat,"non");
fseek(f,sizeof(user)*(num),SEEK_SET);
fwrite(&user,sizeof(user),1,f);//ecriture
fclose(f);//fermetrure
printf("L'utilisateur a bien ete supprime\nTapez une touche pour retourner au menu");
getch();
menu();
}
else
{
menu();
}
getch();
} |
La variable ok reçoit le nombre d'utilisateur inscrit dans le fichier qui sont a l'état "oui". Mais j'ai un souci. Par exemple, j'ai 7 personnes dans mon fichier.
Les 5 premiers à "oui", la 6eme à "non", et la 7eme à "oui".
Donc quand j'affiche le tableau (grace a la fontion afficheUser();), il me donne un tableau avec 6 utilisateurs. Mais si je veux supprimer le 6eme, il me positionne sur le 6eme enregistrement du fichier qui est deja à non, et voila mon souci.
Je ne sais pas comment résoudre ce souci, quelqu'un pourrait' il m'aider ?
Sinon ma question est : existe t il une fonction pour sortir d'un programme, j'utilise Microsoft C++, j'ai fais un truc mais ça marche pas vraiment :
Code:
1 2 3 4 5 6 7
| void degage()
{
system("cls");
printf("Tapez pour quitter ...");
getch();
} |
Merci d'avance