#include <iostream>
#include <fstream>
#include <string>
#include <stdio.h>
#define MAX 2
using namespace std;
struct Persona
{
char nome[20];
string cognome;
char Residenza[30];
char Data_Nascita[20];
};
void Aggiungi(Persona *p,FILE *f);
void Cancella(Persona *p,FILE *f);
void Ricerca(Persona *p,FILE *f);
void Ricerca_cognome(Persona *p,FILE *f);
void InserisciContatto(Persona *p,FILE *f);
int main()
{
int scelta1;// scelta dell'utente al primo menu
int scelta2;// scelta dell'utente al secondo menu
Persona *p; //puntatore alla struttura Persona
p=new Persona;
FILE *f;
f=fopen("pippo.txt","w"); // apertura file in modalità di scrittura
cout << "-------------Menu-------------"<<endl;
cout << "1.Inserisci contatti."<<endl;
cout << "2.Esci dalla rubrica."<<endl;
cin >> scelta1;
if (scelta1 == 1)
{
InserisciContatto(p,f);
}
else
{
if (scelta1==2)
{
return 0;
}
}
cout << "-------------Menu-------------"<<endl;
cout << "1.Aggiungi un contatto."<<endl;
cout << "2.Cancella un contatto."<<endl;
cout << "3.Ricerca un contatto."<<endl;
cin >> scelta2;
if (scelta2==1)
{
Aggiungi(p,f);
}
else
{
if (scelta2==2)
{
Cancella(p,f);
}
else
{
if (scelta2==3)
{
Ricerca(p,f);
}
}
}
for(int i=0;i<MAX;i++)
{
p=NULL;
delete p;
}
fclose(f);
return 0;
}
void Cancella(Persona *p,FILE *f)
{
int x;
int j=0;
FILE *a;
a=fopen("cancella.txt","w");
cout << "Inserisci numero contatto da cancellare : ";
cin >> x;
do
{
for(int i=0;i<MAX;i++)
{
cout << "Nome : ";
cout << p->nome;
cout << "Cognome : ";
cout << p->cognome;
cout << "Residenza : ";
cout << p->Residenza;
cout << "Data di nascita : ";
cout << p->Data_Nascita;
}
}
while (fseek (f,(x-1)*sizeof(Persona),SEEK_SET)==0);
}
Qui ho provato nella funzione Cancella a stampare tutti i contatti finchè il programma non arriva alla struttura Persona da saltare,ma il programma così il programma stampa all'infinito il contatto da saltare;sapete drimi come correggere la condizione del while?