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 :
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 :
void degage()
{
system("cls");
printf("Tapez pour quitter ...");
getch();
}
Merci d’avance