Fenomeno85
14-11-2002, 18:16
ciao a tutti, non riesco a modificare l'ultimo elemento quando setto a 1 un flag x nn leggere + quella persona. Come faccio?
grazie mille
//cancellazione logica
#include <stdio.h>
#include <conio.h>
struct alunno
{
char cognome[10];
int matricola;
int f; //flag
};
void carica ()
{
int n;
alunno a;
FILE *fp;
printf ("\n\nNumero da caricare:\t");
scanf ("%d",&n);
fp=fopen ("nome","wb");
for (int i=0;i<n;i++)
{
printf ("\n\n%d alunno:",i+1);
printf ("\n\nInserisci Cognome:\t");
fflush (stdin);
gets (a.cognome);
printf ("\n\nInserisci codice:\t");
scanf ("%d",&a.matricola);
a.f=0;
fwrite (&a,sizeof (a),1,fp);
}
fclose (fp);
}
void cancella ()
{
int b,i=-1,matricola;
alunno a;
FILE *fp;
printf ("\n\nMatricola:\t");
scanf ("%d",&matricola);
fp=fopen ("nome","r+b");
do
{
fread (&a,sizeof(a),1,fp);
b=feof(fp);
if (b==0)
{
i++;
if (matricola==a.matricola)
{
a.f=1;
fseek (fp,sizeof(a)*i,0);
fwrite (&a,sizeof(a),1,fp);
break;
}
}
}while (!feof(fp));
fclose (fp);
}
void visualizza ()
{
int b;
printf ("\n\nVisualizza Alunni.");
alunno a;
FILE *fp;
fp=fopen ("nome","rb");
while (!feof (fp))
{
fread (&a,sizeof(a),1,fp);
b=feof(fp);
if (b==0)
{
if (a.f==0)
{
printf ("\n\nCognome:\t%s",a.cognome);
printf ("\n\nMatricola:\t%d",a.matricola);
}
}
}
fclose (fp);
}
void main ()
{
int scelta;
for (;; )
{
printf ("\n\n1-\tcaricare_file.");
printf ("\n\n2-\tcancellare.");
printf ("\n\n3-\tvisualizzare.");
printf ("\n\n4-\tuscire");
printf ("\n\nScelta:\t");
scanf ("%d",&scelta);
if (scelta==4) break;
if (scelta==1) carica ();
if (scelta==2) cancella ();
if (scelta==3) visualizza ();
}
}
grazie mille
//cancellazione logica
#include <stdio.h>
#include <conio.h>
struct alunno
{
char cognome[10];
int matricola;
int f; //flag
};
void carica ()
{
int n;
alunno a;
FILE *fp;
printf ("\n\nNumero da caricare:\t");
scanf ("%d",&n);
fp=fopen ("nome","wb");
for (int i=0;i<n;i++)
{
printf ("\n\n%d alunno:",i+1);
printf ("\n\nInserisci Cognome:\t");
fflush (stdin);
gets (a.cognome);
printf ("\n\nInserisci codice:\t");
scanf ("%d",&a.matricola);
a.f=0;
fwrite (&a,sizeof (a),1,fp);
}
fclose (fp);
}
void cancella ()
{
int b,i=-1,matricola;
alunno a;
FILE *fp;
printf ("\n\nMatricola:\t");
scanf ("%d",&matricola);
fp=fopen ("nome","r+b");
do
{
fread (&a,sizeof(a),1,fp);
b=feof(fp);
if (b==0)
{
i++;
if (matricola==a.matricola)
{
a.f=1;
fseek (fp,sizeof(a)*i,0);
fwrite (&a,sizeof(a),1,fp);
break;
}
}
}while (!feof(fp));
fclose (fp);
}
void visualizza ()
{
int b;
printf ("\n\nVisualizza Alunni.");
alunno a;
FILE *fp;
fp=fopen ("nome","rb");
while (!feof (fp))
{
fread (&a,sizeof(a),1,fp);
b=feof(fp);
if (b==0)
{
if (a.f==0)
{
printf ("\n\nCognome:\t%s",a.cognome);
printf ("\n\nMatricola:\t%d",a.matricola);
}
}
}
fclose (fp);
}
void main ()
{
int scelta;
for (;; )
{
printf ("\n\n1-\tcaricare_file.");
printf ("\n\n2-\tcancellare.");
printf ("\n\n3-\tvisualizzare.");
printf ("\n\n4-\tuscire");
printf ("\n\nScelta:\t");
scanf ("%d",&scelta);
if (scelta==4) break;
if (scelta==1) carica ();
if (scelta==2) cancella ();
if (scelta==3) visualizza ();
}
}