trick
#include <stdio.h>
struct filme {
char ocup;
};
int n=1000000 //numero maximo de filmes
void inicializa (p) //:::::::::::::::::::::::::::::::::::::::::::::::::::::
struct filme *p;
{
int i;
for (i=0, i<n,i++)
(p++) -> ocup='0';
}
int menu() //:::::::::::::::::::::::::::::::::::::::::::::::::::::
{
int i;
printf ("\n #---------------------------------------#");
printf ("\n | Inserir Filme______________________(1)|");
printf ("\n | Apagar Registo_____________________(2)|");
printf ("\n | Listar Filmes______________________(3)|");
printf ("\n | Ficheiros: |");
printf ("\n | Gravar em fiCheiro_________________(4)|");
printf ("\n | Ler Ficheiro_______________________(5)|");
printf ("\n | Gravar só os Reg. Ocupados_________(6)|");
printf ("\n | Ler só os Reg. Ocupados____________(7)|");
printf ("\n | Sair_______________________________(8)|");
printf ("\n #---------------------------------------#\n");
do {
printf ("Qual a sua opcao?");
scanf ("d",&i);
}
while (i<0 || i>12);
return i;
}
void inserir(p) //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
struct filme *p;
{
int i;
for (i=0; i<n && p->ocup=='1'; i++)
p++;
if (i<n)
}
printf ("\n\tQual o Título do filme?");
scanf ("%s", p->titulo);
print ("\tQual o genero?");
scanf ("%s", p->genero);
p->ocup='1';
}
else
printf ("\n\t Lista Completa");
}
void apagar(p) //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
struct filme *p;
{
int i;
printf ("\n Qual o n: do registo do filme a apagar?");
scanf ("%d",&i);
if (i>0 && i<=n)
(p+i-1) -> ocup='0';
}
void mostrar(p) //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
strcut filme *p;
{
int i;
for (i=0;i<0;i++)
}
if (p->ocup=='1')
printf ("\n\t\t Registo n: %d \n\t\t Titulo: %s \n\t\t Qual o genero: %s",i+1,p->titulo,p->genero);
else
printf ("\nRegisto n: %d (livre)", i+1);
p++;
}
}
void escreveficheiro1(p) //::::::::::::::::::::::::::::::::::::::::::::::::::::
struct filme *p
{
FILE *fic;
int i;
char *nome="lista1.dat";
if ((fic= fopen(nome,"w"))==NULL)
fprintf (stderr, "impossivel abrir ficheiro.\n");
else
{
fread (p,sizeof(*p),n,fic);
fclose(fic);
}
}
void escreverficheiro2(p) //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
struct filme *p;
{
FILE *fic;
int i;
char *nome="lista2.dat";
if ((fic= fopen(nome,"w"))==NULL)
fprintf(stderr, "impossivel abrir o ficheiro. \n");
else
{
for (i=0;i<n;i++)
}
fwrite(p,sizeof(*p),1,fic);
p++;
}
fclose (fic);
}
}
void leficheiro2(p) //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
struct filme *p;
{
FILE *fic;
int i;
char *nome="lista2.dat";
if ((fic= fopen (nome "r"))==NULL)
fprintf(stderr,"impossivel abrir o ficheiro. \n");
else
{
for (i=0;i<n;i++)
{
fread(p,sizeof(*p,1,fic);
p++;
}
fclose(fic);
}
}
void escreveficheiro3(p) //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
struct filme *p;
{
FILE *fic;
int i;
char *nome="lista3.dat";
if (fic= fopen(nome,"r"))==NULL)
fprintf (stderr, "Impossivel abrir ficheiro.\n");
else
{
while (!feof(fic))
{
fread(p,sizeof(*p),1,fic);
p++;
fclose (fic);
}
}
int main() //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
{
struct filme filmes [n];
struct filme copia [n];
int op;
FILE *fic;
inicializa (filmes);
inicializa (copia);
do
{
op=menu();
switch (op)
{
case 1: inserir (filmes); break;
case 2: apagar (filmes); break;
case 3: mostrar (livros); break;
case 4: escreverficheiro1(filmes); break;
case 5: leficheiro (copia);
mostrar (copia);
break;
case 6: escreveficheiro2 (filmes); break;
case 7: leficheiro2(copia);
mostrar (copia);
break;
case 8: escreveficheiro3(filmes); break;
case 9: leficheiro3(copia);
mostrar(copia);
break;
case 10: exit(0);
}
}
while (1);
printf("\n\n");
getc(stdin);
return 0;
}
grandes mestres dêem uma vista de olhos e digam qualquer coisa....abraço e obrigado